Java中List合并去重累加去重值
在Java编程中,有时候我们会碰到需要合并两个List,并去除重复值,然后再进行累加操作的情况。这个过程可能会比较繁琐,但是通过合适的方法和技巧,我们可以简化这个过程。在本文中,我将向大家介绍如何用Java实现这个功能。
1. 合并两个List并去重
首先,我们需要合并两个List并去重。可以使用Java 8的Stream API来实现这一步骤。下面是一个示例代码:
import java.util.List;
import java.util.stream.Collectors;
public class ListUtils {
public static List<Integer> mergeAndDistinct(List<Integer> list1, List<Integer> list2) {
return Stream.concat(list1.stream(), list2.stream())
.distinct()
.collect(Collectors.toList());
}
}
在这段代码中,我们将两个List合并成一个Stream,然后调用distinct()
方法去重,最后用collect(Collectors.toList())
将Stream转换为List。
2. 累加去重值
接下来,我们需要对合并后的List进行累加操作,并去除重复值。下面是一个示例代码:
import java.util.List;
public class ListUtils {
public static int sumDistinct(List<Integer> list) {
return list.stream()
.distinct()
.mapToInt(Integer::intValue)
.sum();
}
}
在这段代码中,我们先调用distinct()
方法去重,然后使用mapToInt()
方法将Integer对象转换为int类型,最后使用sum()
方法进行累加操作。
3. 完整的代码示例
下面是一个完整的示例代码,展示了如何合并两个List、去重、累加、去重值:
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class ListUtils {
public static List<Integer> mergeAndDistinct(List<Integer> list1, List<Integer> list2) {
return Stream.concat(list1.stream(), list2.stream())
.distinct()
.collect(Collectors.toList());
}
public static int sumDistinct(List<Integer> list) {
return list.stream()
.distinct()
.mapToInt(Integer::intValue)
.sum();
}
public static void main(String[] args) {
List<Integer> list1 = List.of(1, 2, 3, 4);
List<Integer> list2 = List.of(3, 4, 5, 6);
List<Integer> mergedList = mergeAndDistinct(list1, list2);
System.out.println("Merged List: " + mergedList);
int sum = sumDistinct(mergedList);
System.out.println("Sum of Distinct Values: " + sum);
}
}
流程图
下面是一个流程图,展示了合并两个List、去重、累加、去重值的整体流程:
flowchart TD;
A[Start] -- 合并两个List --> B(合并List并去重)
B -- 累加操作 --> C(累加去重值)
C -- 输出结果 --> D[End]
通过以上步骤,我们成功实现了Java中合并两个List并去重、累加去重值的功能。希望本文对您有所帮助!如果您有任何问题或建议,请随时留言反馈。感谢阅读!