JavaFx ObservableList <String> sorted()与sorted(Comparator。<String> naturalOrder())

特拉维斯

所以我最初尝试使用

listOfStrings = listOfStrings.sorted();


Ordering user11, user10, user20, user04 etc...

其中有JavaDoc声明它将创建具有自然顺序的列表

用户抱怨订购,所以我想我必须写一个比较器,但是很幸运,IntelliJ自动填写了

listOfStrings = listOfStrings.sorted(Comparator.<String>naturalOrder());

Ordering user01, user02, user03, user04 etc...

我的第一个想法是,它将返回相同的内容,但是它按照我想要的方式对字符串进行排序。Comparator.naturalOrder的文档也为自然订单

那我在文档中错过了什么呢?

通过阅读文档,我相信他们应该订购相同的清单。有谁知道为什么不呢?

正在从文本文件user01,user02,user03.user04,user05,user06,user07,user08,user09,user10,user11,user12,user13,user14,user15,user16,user17,user18,user19,user19,user20读取字符串键中有地图。

for (String user: userMap.keySet()) {
            listOfStrings.add(user);
}  

// listOfStrings = listOfStrings.sorted();  //
listOfStrings = listOfStrings.sorted(Comparator.<String>naturalOrder());
宝石海

这是Java 8u40中的一个错误,此错误随后(大部分)已得到修复,以供以后的发行版使用。(请参阅此答案的注释,以获取关于极端情况或替代实现选择的讨论)。

错误跟踪器问题:

以及相关的变更集


的Java 8u40代码ObservableList.java方法是:

public default SortedList<E> sorted() {
    return sorted(null);
}

用户pbabcdefp的应答中详细说明了上述呼叫的错误呼叫顺序。代码中的错误基本上意味着该sorted()方法根本不返回排序列表,而是按其当前顺序返回列表。

爪哇8U-dev的(当前躯干代码)和爪哇9U-dev的代码是:

/**
 * Creates a {@link SortedList} wrapper of this list with the natural
 * ordering.
 * @return new {@code SortedList}
 * @since JavaFX 8.0
 */
public default SortedList<E> sorted() {
    Comparator naturalOrder = new Comparator<E>() {

        @Override
        public int compare(E o1, E o2) {
            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);
            }

            return Collator.getInstance().compare(o1.toString(), o2.toString());
        }
    };
    return sorted(naturalOrder);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

JavaFX 将 ObservableList<String> 添加到单列 TableView

java.lang.UnsupportedOperationException JavaFX ArrayList <String>到ObservableList <StringProperty>

JavaFX从ObservableList填充TableView

JavaFX ObservableList 的异常错误

Java 8 Comparator nullsFirst naturalOrder混淆

将ObservableList <TextField>绑定到ListProperty <String> JFX

JAVAFX 8 ComboBox和ObservableList

JavaFX – ObservableList和列表的项目更改

Javafx链接/绑定Treeview项到ObservableList

JavaFX:将ObservableList绑定到哪个视图?

JavaFX,将ArrayList转换为ObservableList

在JavaFX中使用CheckBox过滤ObservableList

JavaFX中筛选后的ObservableList属性列表

JavaFX observableList 作为 Map 中的值

JavaFX ObservableList更改不更新ListView

JavaFX,列表到 ObservableList 到 ListView

javafx在string.equals()中获取错误

java.util.Comparator.naturalOrder采用<T扩展Comparable <?超级T >>并返回Comparator <T>-为什么?

为什么JavaFX TableView#setItems采用ObservableList <T>而不采用ObservableList <?延伸T>?

尽管可以推断Long,但是Collectors.maxBy(Comparator.naturalOrder())无法编译

尽管可以推断Long,但Collectors.maxBy(Comparator.naturalOrder())不会编译

如何在JavaFX中用ObservableMap <KeyObject,ObservableList <CustomObject >>填充TableView

JavaFx ObservableList要更改每个单元格的颜色

JavaFX TableView和ObservableList-如何自动更新表?

JavaFX TableView将cellValueFactory内部的更改绑定到表observablelist

如何正确使用JavaFX TableView和ObservableList类?

为什么JavaFX table.getItems()。clear()也清除ObservableList

按值升序和降序对ObservableList <Class>进行排序-JAVAFX

从JavaFX应用程序写入/读取嵌套的ObservableList