java 假设有两个List,分别为list1和list2,这两个list的对象中有一个共同的字段field1,筛选出list1中的field1字段值和list2中的field1字段值相同的数据,保存到list3中
时间: 2024-03-28 21:42:22 浏览: 49
java中list排序
5星 · 资源好评率100%
好的,您可以使用Java中的Stream API来实现。以下是一个示例代码:
```java
// 假设list1和list2中的每个元素都是一个对象,且都有一个名为'field1'的字段
List<MyObject> list1 = Arrays.asList(new MyObject(1, "Alice"), new MyObject(2, "Bob"), new MyObject(3, "Charlie"));
List<MyObject> list2 = Arrays.asList(new MyObject(2, 30), new MyObject(4, 25), new MyObject(1, 28));
// 筛选出list1中的'field1'字段值和list2中相同的数据,并保存到list3中
List<MyObject> list3 = list1.stream()
.filter(obj1 -> list2.stream().anyMatch(obj2 -> obj2.getField1().equals(obj1.getField1())))
.collect(Collectors.toList());
System.out.println(list3); // 输出结果为 [{id=1, field1='Alice'}, {id=2, field1='Bob'}]
```
这个代码使用Stream API的filter操作来实现,首先使用filter操作筛选出list1中的'field1'字段值和list2中相同的数据,其中anyMatch操作用于判断list2中是否存在与list1中当前元素相同的'field1'字段值。最终结果存储在list3中,并使用collect操作将结果转换为List类型。需要注意的是,这里的MyObject类需要具有getField1方法来获取'field1'字段的值,同时需要自行实现equals和hashCode方法来支持List的contains和anyMatch操作。
阅读全文