.stream().filter详解

一、stream filter过滤


List<Integer> numberList = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

List<Integer> evenNumbersList = numberList.stream()
                                        .filter(n -> n % 2 == 0)
                                        .collect(Collectors.toList());

System.out.println(evenNumbersList); //[2, 4, 6, 8, 10]

我们首先创建了一个包含1~10的整数列表(numberList),然后使用.stream()将其转换为一个Stream对象。接着,我们使用.filter()方法过滤出列表中的偶数,并将结果存储在一个新的列表(evenNumbersList)中,最后使用.collect()方法将结果转换回List类型。

可以看到,Stream和Lambda表达式的结合使用,可以更加高效和简洁地实现数据的过滤。

二、stream filter map


List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Emily");

List<String> upperCaseNames = names.stream()
                                      .filter(name -> name.startsWith("A"))
                                      .map(String::toUpperCase)
                                      .collect(Collectors.toList());

System.out.println(upperCaseNames); //[ALICE]

这里我们定义了一个包含多个字符串的列表(names),然后使用.filter()方法过滤出以“A”开头的字符串,并使用.map()方法将其转换为大写字母。最终我们得到一个只包含“ALICE”的List。

在这个例子中,使用map()方法返回的结果类型被显式地指定为String类型。

三、stream流的filter


Stream<String> namesStream = Stream.of("Alice", "Bob", "Charlie", "David", "Emily");

Stream<String> upperCaseNamesStream = namesStream.filter(name -> name.startsWith("A"))
                                                   .map(String::toUpperCase);

System.out.println(upperCaseNamesStream.collect(Collectors.toList())); //[ALICE]

这个例子中,我们使用Stream.of()方法创建了一个包含多个字符串的流(namesStream)。同样地,使用.filter()方法过滤出以“A”开头的字符串,并使用.map()方法将其转换为大写字母。最终,使用collect()方法将结果转换为List类型。需要注意的是,流只能被消费一次,如果我们尝试在上面的代码中打印upperCaseNamesStream,将会得到一个空的列表。

四、stream的filter方法详解


Stream<Integer> numberStream = Stream.of(1, 2, 3, 4, 5, 6, 7, 8);

Stream<Integer> evenNumbersStream = numberStream.filter(n -> n % 2 == 0);

evenNumbersStream.forEach(n -> System.out.print(n + " ")); //2 4 6 8

在这个例子中,我们使用Stream.of()方法创建了一个包含多个数字的流(numberStream)。然后,我们使用.filter()方法过滤出偶数,并使用.forEach()方法将其打印出来。

需要注意的是,我们没有将结果存储在一个列表中,而是直接将其打印出来。因为Stream是惰性求值的,只有在终止操作(如forEach())被触发时才会执行中间操作(如filter())。

五、list的filter方法


List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Emily");

List<String> filteredNames = names.stream()
                                     .filter(name -> name.length() <= 4)
                                     .collect(Collectors.toList());

System.out.println(filteredNames); //[Bob, David, Emily]

这个例子中,我们定义了一个包含多个字符串的列表(names)。使用.stream()方法将其转换为一个Stream对象,接着,使用.filter()方法过滤出长度小于或等于4的字符串,并使用.collect()方法将结果转换为一个新的List对象。

六、stream filter 用法


List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Emily");

Predicate<String> startsWithAPredicate = name -> name.startsWith("A");
Predicate<String> lengthLessThanFivePredicate = name -> name.length() < 5;

List<String> filteredNamesWithPredicates = names.stream()
                                                   .filter(startsWithAPredicate.and(lengthLessThanFivePredicate))
                                                   .collect(Collectors.toList());

System.out.println(filteredNamesWithPredicates); //[Alice]

这个例子中,我们首先定义了两个Predicate对象(startsWithAPredicate和lengthLessThanFivePredicate),分别用于判断字符串是否以“A”开头和长度是否小于5。接着使用.filter()方法将这两个Predicate组合起来,过滤出符合条件的字符串,并使用.collect()方法将结果转换为一个新的List对象。

七、list stream过滤


List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);

List<Integer> evenNumbers = numbers.stream()
                                        .filter(n -> n % 2 == 0)
                                        .collect(Collectors.toList());

System.out.println(evenNumbers); //[2, 4, 6, 8]

这个例子中,我们定义了一个包含多个整数的列表(numbers),然后使用.stream()将其转换为一个流对象,再使用.filter()方法过滤出偶数,并使用.collect()方法将结果转换为一个新的List对象。

八、list使用stream过滤数据


List<Person> persons = new ArrayList<>();

persons.add(new Person("Alice", "Female"));
persons.add(new Person("Bob", "Male"));
persons.add(new Person("Charlie", "Male"));
persons.add(new Person("David", "Male"));
persons.add(new Person("Emily", "Female"));

List<Person> females = persons.stream()
                                   .filter(p -> p.getGender().equals("Female"))
                                   .collect(Collectors.toList());

System.out.println(females); //[Person{name='Alice', gender='Female'}, Person{name='Emily', gender='Female'}]

这个例子中,我们首先定义了一个包含多个Person对象的列表(persons)。其中,每一个Person对象包含一个姓名(name)和性别(gender)。我们使用.stream()方法将其转换为一个流对象,接着使用.filter()方法过滤出性别为“Female”的Person对象,并使用.collect()方法将结果转换为一个新的List对象。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/285257.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-22 15:43
下一篇 2024-12-22 15:43

相关推荐

  • 如何使用integratecustomerdata.stream().filter(c->{ if (collectionutil.isnotempty(

    本文将详细介绍如何在Java编程中使用integratecustomerdata.stream().filter(c->{ if (collectionutil.isnote…

    编程 2025-04-28
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25
  • Python安装OS库详解

    一、OS简介 OS库是Python标准库的一部分,它提供了跨平台的操作系统功能,使得Python可以进行文件操作、进程管理、环境变量读取等系统级操作。 OS库中包含了大量的文件和目…

    编程 2025-04-25
  • 详解eclipse设置

    一、安装与基础设置 1、下载eclipse并进行安装。 2、打开eclipse,选择对应的工作空间路径。 File -> Switch Workspace -> [选择…

    编程 2025-04-25
  • MPU6050工作原理详解

    一、什么是MPU6050 MPU6050是一种六轴惯性传感器,能够同时测量加速度和角速度。它由三个传感器组成:一个三轴加速度计和一个三轴陀螺仪。这个组合提供了非常精细的姿态解算,其…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25

发表回复

登录后才能评论