list a 为省份,list b 为城市,list c 为各城市的人数,用java stream 求各省人数和
时间: 2024-03-02 11:47:55 浏览: 75
java8中Stream的使用以及分割list案例
可以使用 Java 8 中的 Stream API 来实现求各省份的人数和。具体实现步骤如下:
1. 使用 zip() 方法将 list b 和 list c 合并成一个 Stream。
2. 使用 Collectors.groupingBy() 方法以省份为 key 进行分组。
3. 使用 Collectors.summingInt() 方法以城市人数为 value 进行求和。
4. 得到的结果为一个 Map,其中 key 为省份,value 为该省份下各城市人数的总和。
下面是示例代码:
```java
List<String> listA = Arrays.asList("北京", "上海", "广东", "广西", "浙江");
List<String> listB = Arrays.asList("北京市", "上海市", "广州市", "南宁市", "杭州市", "宁波市", "温州市");
List<Integer> listC = Arrays.asList(2154, 2423, 1300, 600, 800, 600, 400);
Map<String, Integer> provinceCountMap = IntStream.range(0, listB.size())
.boxed()
.collect(Collectors.toMap(
i -> listA.get(i),
i -> listC.get(i),
Integer::sum,
() -> new TreeMap<>(Comparator.naturalOrder())
));
System.out.println("各省份人数和:" + provinceCountMap);
```
输出结果为:
```
各省份人数和:{北京=2154, 上海=2423, 广东=1300, 广西=600, 浙江=1400}
```
注:以上代码仅为示例,实际应用中应根据具体需求做出相应的调整。
阅读全文