java - 带比较器的有序流

标签 java java-8 java-stream

getSortedUsers() 是否总是返回 getUsers() 的有序流 独立于 getUsers() -集合类型?

public Set<User> getUsers(){
    // unordered collection type
    HashSet<User> set = new HashSet<>();
    set.add(..);
    set.add(..);
    set.add(..);
    return set;
}

// Is the stream only sorted if getUsers() is hold within a sortable collection type?
public Stream<User> getSortedUsers(Comparator<User> comp){
    return getUsers().stream().sorted(comp);
}

最佳答案

getSortedUsers() 返回的Stream 将始终排序,这是通过调用sorted(comp) 保证的。 Stream 的来源是什么并不重要。

现在,如果您决定将该 Stream 的元素收集到某个 Collection 中,顺序可能会保留也可能不会保留,具体取决于 的类型您选择的集合。如果将元素收集到 HashSet 中,就会丢失顺序。如果您收集到 TreeSetLinkedHashSet 或任何 List,您将保持顺序。

关于java - 带比较器的有序流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57902125/

相关文章:

java - 使用 JGroups 构建一个由 3 台 Linux 机器组成的集群

java - 将字符串转换为日期,几乎完成了!

java - Apple 收据验证时连接重置 (Java 8)

java - 将嵌套循环转换为 Java 8 流

java - Java中无限流的并行处理

Java 8 - 填充 ArrayList

java.lang.UnsatisfiedLinkError : Couldn't load from loader findLibrary returned null

java - Spring Security : Why . AuthorizeRequests().antMatchers ("/api/v1/web/**").permitAll() 不起作用?

java - Parallel Stream 给出空项,如何在 Java 8 中执行

java - 如何将 java 8 流收集/减少到 pojo 中?