当前位置: 首页 > news >正文

JAVA 使用stream流将List中的对象某一属性创建新的List

JAVA 使用stream流将List中的对象某一属性创建新的List

1.stream流介绍

Java Stream是Java 8引入的一种新机制,它可以让我们以声明式方式操作集合数据,提供了更加简洁、优雅的集合处理方式。Stream是一个来自数据源的元素队列,并支持聚合操作。它的特点有:

  • Stream 不会修改原始数据源。
  • Stream 操作是延迟执行的。
  • Stream 操作可以是无限的(比如用于生成随机数的操作)。

2.Stream基础用法

  • 1.创建Stream
    可以使用Stream.of()方法从一组元素创建Stream,例如:
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);

也可以使用集合的stream()方法或parallelStream()方法创建Stream:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream1 = list.stream();            // 顺序流
Stream<Integer> stream2 = list.parallelStream();    // 并行流
  • 2.过滤
    可以使用filter()方法过滤Stream中的元素,例如:
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
Stream<Integer> filteredStream = stream.filter(x -> x % 2 == 0);  // 过滤偶数
  • 3.映射
    可以使用map()方法将Stream中的元素映射为另一种类型,例如:
Stream<String> stream = Stream.of("apple", "banana", "orange");
Stream<Integer> lengthStream = stream.map(String::length);  // 映射为字符串长度
  • 4.排序
    可以使用sorted()方法对Stream中的元素进行排序,例如:
Stream<Integer> stream = Stream.of(3, 1, 4, 1, 5, 9);
Stream<Integer> sortedStream = stream.sorted();  // 默认升序排序
  • 5.去重
    可以使用distinct()方法去除Stream中的重复元素,例如:
Stream<Integer> stream = Stream.of(1, 2, 3, 2, 1);
Stream<Integer> uniqueStream = stream.distinct();  // 去重
  • 6.统计
    可以使用count()方法统计Stream中的元素数量,例如:
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
long count = stream.count();  // 统计元素数量

3.具体用法

经常在业务处理时 我们需要将某个对象list中元素对象的某一属性放在一个新的list 里面,在Java的Stream API中,你可以使用map操作来将List中的元素的某一属性提取出来并组成一个新的List。
示例代码

import java.util.ArrayList;
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 String getName() {return name;}
}public class Main {public static void main(String[] args) {List<Person> personList = new ArrayList<>();personList.add(new Person("Alice", 25));personList.add(new Person("Bob", 30));personList.add(new Person("Charlie", 35));List<String> namesList = personList.stream().map(Person::getName).collect(Collectors.toList());System.out.println(namesList); // 输出:[Alice, Bob, Charlie]}
}

例子中,我们有一个Person类,它具有name和age属性。我们创建了一个包含多个Person对象的List。然后,我们使用Stream API对List进行操作。得到了一个name的新List

http://www.lryc.cn/news/248091.html

相关文章:

  • Elasticsearch:ES|QL 函数及操作符
  • SpringBoot——Swagger2 接口规范
  • 网络入门---网络编程预备知识
  • 记录一次YAMLException异常
  • calendar --- 日历相关函数
  • 中国信息通信研究院产业与规划研究所校招一面、二面内容
  • 一些数据库学习的小结
  • 【计算机网络】虚拟路由冗余(VRRP)协议原理与配置
  • Using Set Processing Examples 使用集合处理示例
  • Spark将execl表格文件导入到mysql中
  • Vue3-Eslint配置代码风格
  • “Install Js dependencies failed“JS SDK安装失败【Bug已解决-鸿蒙开发】
  • 接口测试入门8问(含答案+文档)
  • 【Spring之事务底层源码解析,持续更新中~~~】
  • 吃火锅(Python)
  • 深圳市东星制冷机电受邀莅临2024国际生物发酵展,济南与您相约
  • 内网渗透(哈希传递)
  • 如何在langchain中对大模型的输出进行格式化
  • 【送书活动二期】Java和MySQL数据库中关于小数的保存问题
  • 11月21日,每日信息差
  • 极速整理文件!Python自动化办公新利器
  • 电机控制学习
  • leetcode 1670
  • Nginx热部署
  • 京东数据运营-京东数据平台-京东店铺数据分析-2023年10月京东烘干机品牌销售榜
  • java中的方法引用和Stream流
  • 《第一行代码:Android》第三版-3.4.4体验Activity的生命周期
  • 用java编写一个网络聊天室
  • Opencv颜色追踪
  • 计算机网络——网络可靠性及网络出口配置