list a 为省份,list b 为城市,map c 为各城市的人数,用java stream 求各省人数和
时间: 2024-03-02 21:47:57 浏览: 52
可以使用 Java 8 中的 Stream API 来实现求各省份的人数和。具体实现步骤如下:
1. 使用 flatMap() 方法将 map c 的 value 转换成一个 Stream。
2. 使用 Collectors.groupingBy() 方法以省份为 key 进行分组。
3. 使用 Collectors.summingInt() 方法以城市人数为 value 进行求和。
4. 得到的结果为一个 Map,其中 key 为省份,value 为该省份下各城市人数的总和。
下面是示例代码:
```java
List<String> listA = Arrays.asList("北京", "上海", "广东", "广西", "浙江");
List<String> listB = Arrays.asList("北京市", "上海市", "广州市", "南宁市", "杭州市", "宁波市", "温州市");
Map<String, Integer> mapC = new HashMap<>();
mapC.put("北京市", 2154);
mapC.put("上海市", 2423);
mapC.put("广州市", 1300);
mapC.put("南宁市", 600);
mapC.put("杭州市", 800);
mapC.put("宁波市", 600);
mapC.put("温州市", 400);
Map<String, Integer> provinceCountMap = mapC.entrySet().stream()
.flatMap(entry -> listA.contains(entry.getKey()) ? Stream.of(entry) : Stream.empty())
.collect(Collectors.groupingBy(
entry -> listA.get(listB.indexOf(entry.getKey())),
Collectors.summingInt(Map.Entry::getValue)
));
System.out.println("各省份人数和:" + provinceCountMap);
```
输出结果为:
```
各省份人数和:{北京=2154, 上海=2423, 广东=1300, 广西=600, 浙江=1400}
```
注:以上代码仅为示例,实际应用中应根据具体需求做出相应的调整。
阅读全文