两个list值有相同的部分用Java怎么合并
时间: 2023-03-29 09:01:47 浏览: 72
你可以使用Java中的addAll()方法将两个list合并成一个新的list,然后使用HashSet去重,最后再转换回List类型即可。具体代码实现可以参考以下示例:
List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3, 4));
List<Integer> list2 = new ArrayList<>(Arrays.asList(3, 4, 5, 6));
List<Integer> mergedList = new ArrayList<>(list1);
mergedList.addAll(list2);
Set<Integer> set = new HashSet<>(mergedList);
List<Integer> resultList = new ArrayList<>(set);
System.out.println(resultList); // 输出 [1, 2, 3, 4, 5, 6]
相关问题
java8将部分字段相同的两个list互相赋值
这是一个技术问题,可以回答。在java8中,可以使用stream和lambda表达式来实现将部分字段相同的两个list互相赋值。具体代码实现可以参考以下示例:
```
List<Person> list1 = Arrays.asList(
new Person("John", 28, "M"),
new Person("Jane", 23, "F"),
new Person("Tom", 31, "M")
);
List<Person> list2 = Arrays.asList(
new Person("Mary", 25, "F"),
new Person("Peter", 29, "M"),
new Person("Sally", 33, "F")
);
//将list2中与list1中name相同的元素的age和gender赋值给list1
list1.stream()
.filter(p1 -> list2.stream().anyMatch(p2 -> p2.getName().equals(p1.getName())))
.forEach(p1 -> list2.stream()
.filter(p2 -> p2.getName().equals(p1.getName()))
.findFirst()
.ifPresent(p2 -> {
p1.setAge(p2.getAge());
p1.setGender(p2.getGender());
}));
```
其中Person类定义如下:
```
class Person {
private String name;
private int age;
private String gender;
public Person(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
//getter和setter方法省略
}
```
通过以上代码,可以实现将list2中与list1中name相同的元素的age和gender赋值给list1。
java如何获取两个list集合重叠的部分
可以使用Java8的Stream API来获取两个列表的重叠部分。具体代码如下:
```
List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> list2 = Arrays.asList(3, 4, 5, 6, 7);
List<Integer> overlap = list1.stream()
.distinct()
.filter(list2::contains)
.collect(Collectors.toList());
System.out.println(overlap); // 输出 [3, 4, 5]
```
这段代码先将两个列表中重复的元素筛选出来,然后将结果转换为一个新的列表。