您的当前位置:首页stream中filter用法

stream中filter用法

来源:小侦探旅游网
stream中filter用法

在流(Stream)中,filter方法用于根据指定的条件来过滤元素。它接收一个Predicate函数式接口作为参数,该函数式接口用于定义过滤的条件,只有满足该条件的元素才会被留下,其他元素则会被过滤掉。

filter方法可以用于处理集合、数组等数据结构中的元素,它常常与map、reduce等其他方法一起使用。下面是一些关于filter方法使用的参考内容。

1. 使用filter方法过滤数字列表中的偶数: ```java

List numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); List evenNumbers = numbers.stream() .filter(n -> n % 2 == 0)

.collect(Collectors.toList());

System.out.println(evenNumbers); // 输出:[2, 4, 6, 8, 10] ```

2. 使用filter方法过滤字符串列表中长度大于3的字符串: ```java

List names = Arrays.asList(\"Tom\\"Alice\

List longNames = names.stream() .filter(s -> s.length() > 3) .collect(Collectors.toList());

System.out.println(longNames); // 输出:[Jerry, Mike, Alice] ```

3. 使用filter方法过滤对象列表中满足某个条件的对象: ```java

class Person {

private String name; private int age;

// 省略构造方法和getter、setter

public String toString() {

return \"Person{name='\" + name + \"', age=\" + age + \ } }

List persons = Arrays.asList( new Person(\"Tom\ new Person(\"Jerry\ new Person(\"Mike\);

List filteredPersons = persons.stream() .filter(p -> p.getAge() > 20) .collect(Collectors.toList()); System.out.println(filteredPersons); // 输出:

[Person{name='Jerry', age=25}, Person{name='Mike', age=30}] ```

4. 使用filter方法过滤map中的键值对: ```java

Map scores = new HashMap<>();

scores.put(\"Tom\scores.put(\"Jerry\scores.put(\"Mike\

Map filteredScores = scores.entrySet() .stream()

.filter(entry -> entry.getValue() >= 80) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

System.out.println(filteredScores); // 输出:{Tom=80, Jerry=90} ```

5. 使用多个filter方法进行链式过滤: ```java

List numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); List filteredNumbers = numbers.stream()

.filter(n -> n % 2 == 0) // 过滤出偶数 .filter(n -> n > 5) // 再次过滤出大于5的数

.collect(Collectors.toList()); System.out.println(filteredNumbers); // 输出:[6, 8, 10] ```

以上是一些关于filter方法使用的参考内容,根据实际需求,我们可以通过lambda表达式或方法引用来定义过滤的条件,灵活地对流中的元素进行处理。同时,filter方法也可以与其他方法组合使用,用于实现更复杂的数据操作和转换。

因篇幅问题不能全部显示,请点此查看更多更全内容