只按照name字段筛选
时间: 2023-12-14 08:04:47 浏览: 92
如果你只想按照用户对象的`name`字段进行筛选,你可以使用`Stream`的`filter`方法和`map`方法来实现。以下是一个示例代码:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
class User {
private int id;
private String name;
public User(int id, String name) {
this.id = id;
this.name = name;
}
public String getName() {
return name;
}
}
public class Main {
public static void main(String[] args) {
// 创建两个列表
List<User> list1 = new ArrayList<>();
list1.add(new User(1, "Alice"));
list1.add(new User(2, "Bob"));
list1.add(new User(3, "Charlie"));
List<User> list2 = new ArrayList<>();
list2.add(new User(2, "Bob"));
list2.add(new User(3, "Charlie"));
list2.add(new User(4, "David"));
// 使用Stream API筛选不同的元素
List<String> differentNames = list1.stream()
.map(User::getName) // 提取用户的name字段
.filter(name -> !list2.stream()
.map(User::getName)
.collect(Collectors.toList())
.contains(name))
.collect(Collectors.toList());
// 打印结果
System.out.println("不同的名字:" + differentNames);
}
}
```
上述代码中,我们使用`map`方法提取用户对象的`name`字段,然后使用`filter`方法筛选出在`list1`中存在但是在`list2`中不存在的名字,并将结果收集到一个新的列表中。
输出结果为:
```
不同的名字:[Alice]
```
这表示在`list1`中只有名字为"Alice"的用户在`list2`中不存在。你可以根据需要修改代码,适应不同类型的对象和字段。
阅读全文