用java查找两个list对象中,各有一个string属性,以list1为主查找,在list2中没有list1的属性
时间: 2024-05-30 19:14:01 浏览: 89
可以使用Java 8的流操作来实现:
假设有两个类,一个是Person类,另一个是Address类,Person类中有一个属性是address,而Address类中有一个属性是name。
首先,我们定义两个List对象list1和list2:
List<Person> list1 = new ArrayList<>();
List<Address> list2 = new ArrayList<>();
然后,我们可以使用流操作来查找在list1中有的但是在list2中没有的Address对象的name属性,代码如下:
List<String> result = list1.stream()
.map(Person::getAddress)
.filter(address -> !list2.stream()
.map(Address::getName)
.collect(Collectors.toList())
.contains(address.getName()))
.map(Address::getName)
.collect(Collectors.toList());
解释一下上面的代码:
- 首先,我们使用list1的流来映射出其中的address属性;
- 然后,我们使用filter来过滤掉在list2中也存在的Address对象;
- 接着,我们使用map来映射出剩下的Address对象的name属性;
- 最后,我们使用collect来把这些name属性收集到一个List对象中。
这样,我们就可以得到在list1中有的但是在list2中没有的Address对象的name属性了。
阅读全文