java list 去重求和
时间: 2023-07-07 16:44:39 浏览: 69
可以使用 Java 8 的 Stream API 和 Collectors 工具类来实现 list 的去重求和,示例代码如下:
```java
List<Integer> list = Arrays.asList(1, 2, 3, 2, 4, 1, 5);
int sum = list.stream() // 将 list 转换为 Stream
.distinct() // 去重
.mapToInt(Integer::intValue) // 转换为 IntStream
.sum(); // 求和
System.out.println(sum); // 输出结果为 15
```
上述代码中,首先将 list 转换为 Stream,然后使用 distinct() 方法进行去重,接着使用 mapToInt() 方法将 Stream 转换为 IntStream,最后使用 sum() 方法求和。
相关问题
stream list集合去重求和
Java中使用Stream对List集合进行去重并求和的方法有两种。第一种方法是使用循环遍历List集合,利用一个Map存储id和BillsNums对象的映射关系,如果遍历的元素的id已经存在于Map中,则将当前元素的sums和nums与Map中对应的元素进行相加;如果id不存在于Map中,则直接将当前元素添加到Map中。最后,将Map中的值转换为List返回。
第二种方法是对第一种方法的升级版。同样使用Stream对List集合进行处理,利用Collectors.toMap()方法将id作为key,如果有重复的id,则根据指定的合并规则将重复的元素进行合并。合并时,将重复元素的nums和sums与第一个元素进行相加,然后将结果赋值给第一个元素。最后,将Map中的值转换为List返回。
java 两个list合并去重相加
可以使用Java 8的Stream API来实现两个List合并去重相加的操作,具体代码如下:
```
List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> list2 = Arrays.asList(3, 4, 5, 6, 7);
List<Integer> result = Stream.concat(list1.stream(), list2.stream())
.distinct()
.collect(Collectors.toList());
int sum = result.stream().mapToInt(Integer::intValue).sum();
System.out.println(result); // [1, 2, 3, 4, 5, 6, 7]
System.out.println(sum); // 28
```
首先使用`Stream.concat`方法将两个List合并为一个Stream,然后使用`distinct`方法去重,最后使用`Collectors.toList`方法将结果收集到一个List中。接着使用`mapToInt`方法将List中的元素转换为int类型,然后使用`sum`方法求和。