开发者

java中处理stream.filter()的实例代码

开发者 https://www.devze.com 2024-08-21 10:38 出处:网络 作者: serve
目录前言使用场景示例代码1. 过滤列表中的偶数2. 过滤包含特定字符串的字符串列表3. 过滤对象列表说明使用Predicate接口总结前言
目录
  • 前言
  • 使用场景
  • 示例代码
    • 1. 过滤列表中的偶数
    • 2. 过滤包含特定字符串的字符串列表
    • 3. 过滤对象列表
  • 说明
    • 使用Predicate接口
      • 总结

        前言

        在Java中,stream.filter方法用于对流中的元素进行筛选。filter方法接受一个Predicate(一个返回布尔值的函数),然后返回一个包含所有匹配元素的新流。

        使用场景

        假设有一个包含多个元素的集合,需要对其中的元素进行筛选,只保留满足特定条件的元素。

        示例代码

        以下是一些使用stream.filter方法的示例:

        1. 过滤列表中的偶数

        import java.util.Arrays;
        import java.util.List;
        import java.util.stream.Collectors;
        
        public class FilterExample {
            public static void main(String[] args) {
                List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
                
                List<Integer> evenNumbers = numbers.stream()
                                                   .filter(n -> n % 2 == 0)
                                                   .collect(Collectors.toList());
                
                System.out.println(evenNumbers); // 输出: [2, 4, 6, 8, 10]
            }
        }
        

        2. 过滤包含特定字符串的字符串列表

        import java.util.Arrays;
        import java.util.List;
        import java.util.stream.Collectors;
        
        public class FilterExample {
            public static void main(String[] args) {
                List<String> words = Arrays.asList("apple", "banana", "cherry", "date", "fig", "grape");
        
                List<String> filteredwords = words.stream()
                                            编程客栈      .filter(word -> word.contains("a"))
                                                  .collect(Collectors.toList());
        
                System.out.println(filteredWords); // 输出: [apple, banana, grape]
            }
        }
        

        3. 过滤对象列表

        假设有一个Person类,并希望过滤出年龄大于18岁的人。

        import java.util.Arrays;
        import java.util.List;
        import java.util.stream.Collectors;
        
        class Person {
            private String name;
            private int age;
        
            public Person(String name, int age) {
                this.name = name;
                this.age = age;
            }
        
            public int getAge() www.devze.com{
            http://www.devze.com    return age;
            }
        
            public String getName() {
                return name;
            }
        
            @Override
            public String toString() {
                return "Person{name='" + name + "', age=" + age + "}";
            }
        }
        
        public class FilterExample {
            public static void main(String[] args) {
                List<Person> people = Arrays.asList(
                    new Person("John", 20),
                    new Person("Jane", 17),
                    new Person("Tom", 25),
                    new Person("Lucy", 15)
          编程客栈      );
        
                List<Person> adults = people.stream()
                                            .filter(person -> person.getAge() > 18)
                                            .collect(Collectors.toList());
        
                adults.forEach(System.out::println);
                // 输出:
                // Person{name='John', age=20}
                // Person{name='Tom', age=25}
            }
        }
        

        说明

        • stream():将集合转换为流。
        • filter(Predicate):过滤流中的元素,保留满足条件的元素。
        • collect(Collectors.toList()):将流转换回列表。

        使用Predicate接口

        Predicate是一个函数式接口,定义了一个test方法,用于对给定的输入进行评估。

        可以创建自定义的Predicate,如下所示:

        import java.util.function.Predicate;
        
        public class CustomPredicateExample {
            public static void main(String[] args) {
                Predicate<Integer> isEven = n -> n % 2 == 0;
                Predicate<Integer> isPositive = n -> n > 0;
        
                boolean result1 = isEven.test(4); // true
                boolean result2 = isPositive.test(-1); // false
        
                System.out.println(result1); // 输出: true
                System.out.println(resuhttp://www.devze.comlt2); // 输出: false
            }
        }
        

        总结

        stream.filter是Java Stream API中的一个强大工具,可以简洁地对集合进行筛选操作。通过结合使用Lambda表达式和Predicate接口,可以方便地创建各种筛选条件。

        下一步建议:

        a. 使用其他Stream操作(如mapreduce)与filter结合进行复杂的数据处理。

        b. 实现自定义Predicate来筛选更复杂的条件。

        到此这篇关于java中处理stream.filter()的文章就介绍到这了,更多相关java处理stream.filter()内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

        0

        精彩评论

        暂无评论...
        验证码 换一张
        取 消

        关注公众号