返回值要List<User> 不要LIst<String>,只按照name字段筛选
时间: 2023-11-11 14:44:41 浏览: 138
如果你想返回一个`List<User>`类型的列表,并且只按照`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<User> differentUsers = list1.stream()
.filter(user -> !list2.stream()
.map(User::getName)
.collect(Collectors.toList())
.contains(user.getName()))
.collect(Collectors.toList());
// 打印结果
System.out.println("不同的用户:" + differentUsers);
}
}
```
在上述代码中,我们使用`filter`方法筛选出在`list1`中存在但是在`list2`中不存在的用户。首先,我们使用`map`方法提取`list2`中的用户的`name`字段,并将其收集为一个列表。然后,我们使用`contains`方法检查`list1`中的用户的`name`是否存在于`list2`中,如果不存在,则保留该用户。最后,我们将结果收集到一个新的`List<User>`中。
输出结果将是不同的用户列表,根据你的具体数据而定。每个用户对象都包含`id`和`name`字段。请根据需要修改代码,适应不同的对象和字段。
阅读全文