JavaFX Сортировать по заданному значению c - PullRequest
0 голосов
/ 22 апреля 2020

Я работаю с 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));

, но мне не удалось.

Что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...