list.stream.filter
是 Java 8 中引入的 Stream API 的一部分,用于根据指定的条件过滤集合中的元素。以下是一些使用 list.stream.filter
的示例:
- 过滤出偶数 :
List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> filteredList1 = list1.stream()
.filter(num -> num % 2 == 0)
.collect(Collectors.toList());
System.out.println(filteredList1); // 输出: [2, 4]
```
2. **过滤出大于7的数** <b class="card40_249__sup_a7f6" data-sup="sup">1</b>:
```java
List<Integer> list2 = Arrays.asList(6, 7, 8, 9, 10);
List<Integer> filteredList2 = list2.stream()
.filter(num -> num > 7)
.collect(Collectors.toList());
System.out.println(filteredList2); // 输出: [8, 9, 10]
```
3. **根据条件筛选** <b class="card40_249__sup_a7f6" data-sup="sup">3</b>:
```java
List<OnlineRegister> onlineRegisters = // 获取在线注册信息
Integer systemId = 1;
if (systemId != null) {
onlineRegisters = onlineRegisters.stream()
.filter(info -> info.getSystemId() != null && info.getSystemId().equals(systemId))
.collect(Collectors.toList());
}
```
4. **过滤并删除两个集合中存在的数据** <b class="card40_249__sup_a7f6" data-sup="sup">4</b>:
```java
List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> list2 = Arrays.asList(4, 5, 6, 7, 8);
List<Integer> filteredList = list1.stream()
.filter(list2::contains)
.collect(Collectors.toList());
System.out.println(filteredList); // 输出: [4, 5]
```
5. **根据对象属性过滤** <b class="card40_249__sup_a7f6" data-sup="sup">5</b>:
```java
List<Student> studentList = // 获取学生列表
List<Student> boys = studentList.stream()
.filter(s -> s.getGender().equals("male"))
.collect(Collectors.toList());
```
### 建议
- **使用 Lambda 表达式** :`filter` 方法通常与 Lambda 表达式一起使用,使代码更简洁。
- **使用 Collectors** :`collect` 方法用于将过滤后的流转换为集合,如 `Collectors.toList()`<b class="card40_249__sup_a7f6" data-sup="sup">1</b>。
- **链式调用** :可以链式调用多个 Stream 方法,如 `map`、`filter` 和 `collect`,以提高代码的可读性和效率。
通过这些示例和代码片段,你可以看到如何使用 `list.stream.filter` 方法来过滤集合中的元素,并根据不同的条件进行筛选<b class="card40_249__sup_a7f6" data-sup="sup">1</b>。