用java查找两个list对象中根据某个string属性的交集
时间: 2024-05-12 16:16:31 浏览: 10
假设有两个List对象,分别是list1和list2,每个对象有一个字符串属性name,现在需要找出这两个list中name属性相同的交集。
可以使用Java 8的stream API来实现:
```java
List<String> intersection = list1.stream()
.map(obj -> obj.getName())
.filter(name -> list2.stream()
.map(obj -> obj.getName())
.anyMatch(name2 -> name2.equals(name)))
.collect(Collectors.toList());
```
代码解释:
1. 使用stream()方法将list1转换成一个流。
2. 使用map()方法将每个对象转换成它的name属性。
3. 使用filter()方法过滤掉list1中name属性不在list2中的元素。
4. 在filter()方法中使用anyMatch()方法来判断list2中是否存在与当前元素name属性相等的元素。
5. 最后使用collect()方法将过滤后的元素收集到一个List中。
注意:上面的代码仅仅是演示了如何使用stream API来实现交集查找,实际上这种方式不一定比传统的循环查找更高效。如果两个list的大小都很大,那么使用stream API会产生很多中间对象,可能会导致内存占用和性能问题。
相关问题
用java查找两个list对象中根据某个string属性的交集,用双重for循环写
假设两个list分别为list1和list2,属性为name,则代码如下:
```java
List<String> intersection = new ArrayList<>(); // 存放交集
for (Object o1 : list1) {
String name1 = ((YourObjectClass) o1).getName();
for (Object o2 : list2) {
String name2 = ((YourObjectClass) o2).getName();
if (name1.equals(name2)) {
intersection.add(name1);
break; // 找到一个匹配就跳出内层循环,避免重复添加
}
}
}
```
其中,YourObjectClass为存储在list中的对象的类名,getName()为获取该对象的name属性的方法。如果你需要获取其他属性的交集,只需要将getName()替换成对应的方法即可。
用java查找两个list对象中根据某个属性的交集
假设我们有两个List对象,每个对象都包含一个Person类的实例,我们要找到这两个List中根据id属性的交集,可以使用Java 8的Stream API来实现。
首先,我们要定义Person类:
```
public class Person {
private int id;
private String name;
public Person(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
```
然后,我们可以定义两个List对象:
```
List<Person> list1 = Arrays.asList(
new Person(1, "Alice"),
new Person(2, "Bob"),
new Person(3, "Charlie")
);
List<Person> list2 = Arrays.asList(
new Person(2, "Bob"),
new Person(4, "David"),
new Person(5, "Emily")
);
```
现在,我们可以使用Stream API来查找这两个List中根据id属性的交集:
```
List<Person> intersection = list1.stream()
.filter(p1 -> list2.stream()
.anyMatch(p2 -> p2.getId() == p1.getId()))
.collect(Collectors.toList());
```
这个代码片段使用了两个Stream对象,先遍历list1,然后对于每个Person对象,使用anyMatch方法在list2中查找是否存在相同的id属性的Person对象。如果存在,就将这个Person对象加入到结果集合中。最后,我们使用collect方法将结果转换为List对象。
现在,intersection集合中包含了这两个List中根据id属性的交集。