TOT*_*BUS 4 java collections java-stream java.time.instant
我有一个Java Set,我提供信息:
Set<myData> dataLocations = getData(location);
Run Code Online (Sandbox Code Playgroud)
我想排序这个Set我已经尝试过sortedSet并且无法让它工作,所以我尝试了这个
dataLocations = dataLocations.stream().sorted(Comparator.comparing(myData -> myData.expDtTm)).collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)
唯一的问题是,在Java文档中,它不保证保留任何订单.所以我尝试了这个:
TreeSet<myData> sortedDataLocations = dataLocations.stream().sorted(Comparator.comparing(myData -> myData.expDtTm)).collect(Collectors.toCollection(TreeSet<myData>));
Run Code Online (Sandbox Code Playgroud)
不用说它没有用,所以任何有任何其他想法的人都会非常感激.
您可以使用TreeSet并提供比较器
TreeSet<myData> sorted = new TreeSet<>(Comparator.comparing(MyData::expDtTm));
sorted.addAll(dataLocations);
Run Code Online (Sandbox Code Playgroud)
或者如Collector课程Javadocs中所述,创建自己的收集器TreeSet:
Collector<Widget, ?, TreeSet<Widget>> intoSet =
Collector.of(
TreeSet::new,
TreeSet::add,
(left, right) -> { left.addAll(right); return left; }
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
905 次 |
| 最近记录: |