stream 动态排序
时间: 2023-10-03 19:07:21 浏览: 214
快速排序算法-sqlserver清除完全重复的数据只保留重复数据中的第一条
Stream动态排序是指根据一定的规则对Stream中的元素进行排序。Java 8中提供了两个方法对Stream进行排序,分别是sorted()和sorted(Comparator<? super T> comparator)。
sorted()方法会默认使用元素的自然顺序进行排序,例如对于Stream<Integer>,会按照从小到大的顺序进行排序。
sorted(Comparator<? super T> comparator)方法可以接受一个Comparator接口实现作为参数,该方法会使用Comparator接口实现来进行排序。例如,可以使用下面的代码按照字符串长度对Stream<String>进行排序:
```
Stream<String> stream = Stream.of("apple", "banana", "orange", "pear");
List<String> sortedList = stream.sorted((s1, s2) -> s1.length() - s2.length())
.collect(Collectors.toList());
```
在这个例子中,我们通过sorted方法传递了一个Comparator实现,该实现比较两个字符串的长度,并按照长度升序排序。
需要注意的是,对于无序的Stream(例如通过HashSet创建的Stream),排序操作可能会改变元素的顺序。如果需要保证元素的顺序不变,可以使用sorted方法的稳定版本sorted(Comparator<? super T> comparator),该方法会保证相等的元素的顺序不变。
阅读全文