java - 即时订货

标签 java collections java-stream java.time.instant

我有一个 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/

相关文章:

java - 如何使用 Hibernate 映射用户数据类型(复合类型)

java - 如何从github源码制作jar?

Java 8 Stream API 收集器 - addAll 不适用于参数对象,addAll 未定义类型对象

java - 3 个嵌套的 for-each 循环作为 Java Stream(或更好的并行流)

java - 如何从字符串中过滤出唯一元素并将其存储到 ArrayList 中

lambda - 将字符串列表转换为排序的映射字符串长度作为键

Java 机器人类 KeyEvent

java - 我在哪里可以找到适合中级 Java 开发人员的优秀而简洁的 Android 开发教程?

java - MyEclipse中IntelliJ IDEA的Ctrl+D快捷键

java - 定义实现多个接口(interface)的类型集合?