this question中所讨论的,当运行时已知要对它进行操作的流进行排序时,distinct()的实现能够使用更高效的算法。如果我们知道流已排序(例如,因为它来自外部预先排序的数据源,例如带有order by子句的SQL查询),如何获得相似的结果呢?有一个unordered()操作可删除排序标志,但是据我所知,没有办法告诉系统数据已在外部排序。

最佳答案

您可以围绕现有集合创建拆分器,例如:

    List<Integer> list = Arrays.asList(1, 2, 3, 4);

    Spliterator<Integer> sp = Spliterators.spliterator(list, Spliterator.SORTED);

    System.out.println(sp.hasCharacteristics(Spliterator.SORTED)); // true

10-08 01:58