Я работаю с TableView, в котором столбец имеет тип String.
Я знаю, что TableView реализовал метод сортировки для столбца.
Проблема в том, что обычно я получаю строку, похожую на имя, но также
- строку, начинающуюся с числа "5Rose"
- string "-"
затем, в соответствии с естественным порядком сортировки, я имею сначала "-", затем число "5Rose" и имя "Rose".
Вместо этого мне нужно сделать заказ как первый имя "Rose", затем число "5Rose" и "-".
Я пытался реализовать компаратор для установки в столбце
Comparator naturalOrder = new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
//default comparator
if (o1 == null && o2 == null) {
return 0;
}
if (o1 == null) {
return -1;
}
if (o2 == null) {
return 1;
}
if (o1 instanceof Comparable) {
return ((Comparable) o1).compareTo(o2);
}
//compare by the characther -
if (o1 == "-") {
System.out.println("Triggered");
return -1;
}
return Collator.getInstance().compare(o1.toString(), o2.toString());
}
};
nameColumn.setComparator(Comparator.naturalOrder().thenComparing(naturalOrder));
, но мне не удалось.
Что я делаю не так?