我有一个 Java Set
,我将信息提供给:
Set<myData> dataLocations = getData(location);
我想对这个 Set 进行排序我已经尝试过 sortedSet 但无法让它工作,所以我尝试了这个
dataLocations = dataLocations.stream().sorted(Comparator.comparing(myData -> myData.expDtTm)).collect(Collectors.toSet());
唯一的问题是在 Java 文档中它不保证保留任何订单。所以我尝试了这个:
TreeSet<myData> sortedDataLocations = dataLocations.stream().sorted(Comparator.comparing(myData -> myData.expDtTm)).collect(Collectors.toCollection(TreeSet<myData>));
不用说它没有用,所以任何有任何其他想法的人都将不胜感激。
最佳答案
您可以使用 TreeSet
并提供一个比较器
TreeSet<myData> sorted = new TreeSet<>(Comparator.comparing(MyData::expDtTm));
sorted.addAll(dataLocations);
或如Collector
中所述类 Javadocs 为 TreeSet
创建您自己的收集器:
Collector<Widget, ?, TreeSet<Widget>> intoSet =
Collector.of(
TreeSet::new,
TreeSet::add,
(left, right) -> { left.addAll(right); return left; }
);
关于java - 即时订货,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51330128/