首页 > 解决方案 > JavaFX 按特定字符排序

问题描述

我正在使用 TableView,其中列是字符串类型。

我知道 TableView 已经为列实现了一种排序方法。

问题是通常我会收到一个像名字这样的字符串,而且

然后,按照自然的排序顺序,我有第一个“-”,然后是一个数字“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));

但我失败了。

我做错了什么?

标签: javaeclipsejavafxtableviewcomparator

解决方案


推荐阅读