java stream流,筛选出list中的某个属性
时间: 2023-11-08 20:19:18 浏览: 80
可以使用Java 8中的Stream API来对List进行筛选。假设我们有一个List<User>,每个User对象都有属性name,我们想筛选出所有名字为"Tom"的User对象,可以这样实现:
```
List<User> userList = ... // 假设我们有一个User对象的List
List<User> tomList = userList.stream()
.filter(user -> "Tom".equals(user.getName()))
.collect(Collectors.toList());
```
这里使用了Stream的filter方法来过滤列表中的元素,然后使用collect方法将符合条件的元素收集到一个新的List中。其中,lambda表达式 `user -> "Tom".equals(user.getName())` 表示对于每个User对象,只有它的名字是"Tom"时才会被保留。
相关问题
java stream流,筛选出list中的某个字段
可以使用Java 8中的Stream API来对List进行筛选。假设我们有一个List<User>,每个User对象都有属性name,我们想筛选出所有名字为"Tom"的User对象的name属性,可以这样实现:
```
List<User> userList = ... // 假设我们有一个User对象的List
List<String> tomNameList = userList.stream()
.filter(user -> "Tom".equals(user.getName()))
.map(User::getName)
.collect(Collectors.toList());
```
这里使用了Stream的filter方法来过滤列表中的元素,然后使用map方法将每个User对象转换成它的名字属性,最后使用collect方法将符合条件的元素收集到一个新的List中。其中,lambda表达式 `user -> "Tom".equals(user.getName())` 表示对于每个User对象,只有它的名字是"Tom"时才会被保留,`User::getName` 表示获取User对象的name属性。最终得到的是一个名字为"Tom"的User对象的name属性的List。
Java stream流筛选两个list的补集
可以使用Java 8的Stream API来筛选两个List的补集。假设有两个List,分别为list1和list2,代码如下:
```java
List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> list2 = Arrays.asList(3, 4, 5, 6, 7);
List<Integer> difference = list1.stream()
.filter(e -> !list2.contains(e))
.collect(Collectors.toList());
System.out.println(difference);
```
运行结果为:
```
[1, 2]
```
上述代码中,我们通过Stream API的filter方法和contains方法来筛选出list1中不在list2中的元素,最后将结果收集到一个List中。
阅读全文