java 假设有两个List,分别为list1和list2,需要提取list1中的某一个字段和list2中相同的数据
时间: 2023-11-23 10:07:21 浏览: 29
好的,您可以使用Java中的Stream API来实现。以下是一个示例代码:
```java
// 假设list1和list2中的每个元素都是一个对象,且都有一个名为'id'的字段
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中的'id'字段和list2中相同的数据
List<Integer> result = list1.stream()
.map(MyObject::getId) // 提取list1中的'id'字段
.filter(id -> list2.stream().anyMatch(obj -> obj.getId() == id)) // 筛选出与list2中相同的数据
.collect(Collectors.toList()); // 将结果存储在List中
System.out.println(result); // 输出结果为 [1, 2]
```
这个代码使用Stream API的map和filter操作来实现,首先使用map操作提取list1中所有元素的'id'字段,然后使用filter操作筛选出与list2中相同的数据,并最终使用collect操作将结果存储在List中。需要注意的是,这里的MyObject类需要具有getId方法来获取'id'字段的值,同时需要自行实现equals和hashCode方法来支持List的contains和anyMatch操作。