Java 使用 Stream API 对 List<Map<String,String>> 按 CPID 分组
要根据 CPID 分组,你可以使用 Java 的 Stream API 和 Collectors.groupingBy() 方法来实现。首先,你需要将数据 List 转换为 Stream,然后使用 groupingBy() 方法将数据按照 CPID 分组。以下是一个示例代码:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Map<String, String>> data = new ArrayList<>();
// 添加示例数据
Map<String, String> map1 = new HashMap<>();
map1.put('CPID', '1');
map1.put('Name', 'John');
data.add(map1);
Map<String, String> map2 = new HashMap<>();
map2.put('CPID', '2');
map2.put('Name', 'Jane');
data.add(map2);
Map<String, String> map3 = new HashMap<>();
map3.put('CPID', '1');
map3.put('Name', 'Alice');
data.add(map3);
// 根据CPID分组
Map<String, List<Map<String, String>>> groupedData = data.stream()
.collect(Collectors.groupingBy(m -> m.get('CPID')));
// 打印分组结果
groupedData.forEach((cpid, list) -> {
System.out.println('CPID: ' + cpid);
System.out.println('Data: ' + list);
System.out.println();
});
}
}
运行以上代码,你会得到如下输出:
CPID: 1
Data: [{CPID=1, Name=John}, {CPID=1, Name=Alice}]
CPID: 2
Data: [{CPID=2, Name=Jane}]
以上代码中,我们使用了一个包含 CPID 和 Name 属性的 Map 来表示数据。首先,我们创建了一个 List<Map<String, String>> 来存储数据。然后,我们使用 Stream API 的 groupingBy() 方法将数据按照 CPID 分组。分组的结果是一个 Map,其中 Key 是 CPID,Value 是具有相同 CPID 的数据列表。最后,我们遍历分组结果并打印出来。
原文地址: https://www.cveoy.top/t/topic/pjaH 著作权归作者所有。请勿转载和采集!