两个list如何通过其中的一个字段连接为一个新list
时间: 2024-10-15 19:12:52 浏览: 21
为了通过某个字段连接两个list,假设我们有一个Person类,具有name字段,可以创建一个新的list,其元素是第一个list中Person对象的名字。这里给出Java示例:
```java
// 假设List<Person> list1 和 List<Person> list2 是我们的原始列表
List<String> newList = list1.stream()
.filter(person -> list2.contains(person)) // 筛选出存在于list2中的Person
.map(Person::getName) // 提取名字字段
.distinct() // 去除重复的名字
.collect(Collectors.toList()); // 收集到新的list中
// 如果你想保留原顺序,可以在过滤和映射之间添加一个`sorted()`操作
newList = list1.stream()
.sorted(Comparator.comparing(Person::getName)) // 按照名字排序
.filter(person -> list2.contains(person))
.map(Person::getName)
.distinct()
.collect(Collectors.toList());
```
这段代码首先筛选出两个list共有的Person对象,然后提取它们的名字,去除重复项,并收集到一个新的名字列表中。如果需要保持原有的列表顺序,那么在过滤之后先进行排序。
阅读全文