java 1.8 list 相同数据分组得到多个子list
时间: 2023-09-10 15:12:56 浏览: 96
JAVA JDK8 List分组的实现和用法
5星 · 资源好评率100%
可以使用Java 8的流式处理和Collectors.groupingBy()方法来实现。具体实现方法如下:
假设有一个包含多个元素的List对象,每个元素都有一个属性,我们要根据这个属性对元素进行分组,得到多个子List。
```
List<MyObject> list = ... // 包含多个元素的List对象
Map<String, List<MyObject>> groups = list.stream()
.collect(Collectors.groupingBy(MyObject::getProperty));
```
其中,MyObject代表List中的元素类型,getProperty()方法返回元素的属性值,groups是一个Map对象,其中键是属性值,值是相应属性值对应的元素子List。
如果要得到子List中的元素按照某个属性排序后的结果,可以使用sorted()方法:
```
Map<String, List<MyObject>> groups = list.stream()
.sorted(Comparator.comparing(MyObject::getSomeProperty))
.collect(Collectors.groupingBy(MyObject::getProperty));
```
其中,getSomeProperty()方法返回一个用于排序的属性值,将其传递给Comparator.comparing()方法用于排序。
阅读全文