java steam 根据A,B两列 相同的放到一起,去掉A列相同数小于5条的数据
时间: 2024-02-22 08:57:56 浏览: 69
针对你的问题,可以按照以下步骤来实现:
1. 读取数据并转换成对象格式,假设对象的A列为 aField,B列为 bField。
2. 使用 stream() 方法将集合转换成流。
3. 使用 groupingBy() 方法按照 aField 和 bField 进行分组,并将分组后的结果转换为 List。
4. 使用 filter() 方法筛选出 List 中元素数量大于等于 5 的分组。
5. 将结果收集到一个新的 List 中。
下面是示例代码:
```java
List<DataObject> dataList = readData(); // 读取数据并转换成对象格式
Map<String, Map<String, List<DataObject>>> groupMap = dataList.stream().collect(Collectors.groupingBy(DataObject::getAField, Collectors.groupingBy(DataObject::getBField)));
List<List<DataObject>> result = groupMap.values().stream().flatMap(m -> m.values().stream()).filter(list -> list.size() >= 5).collect(Collectors.toList());
```
其中,DataObject 代表数据对象类,getAField() 方法返回 A 列的值,getBField() 方法返回 B 列的值。最终结果 result 是一个 List,里面包含了所有符合条件的分组数据。
阅读全文