使用Java8新特性对List对象进行遍历、过滤、排序等处理

2023-11-15

使用java8 新特性stream流对List对象进行遍历、过滤、查询、去重、排序、分组

 

新建一个名为Student的类,包含以下属性:

public class Student {
    private String name;
    private int age;
    private String major;
    private double score;
  
    // 构造函数、getter和setter方法
}

现在我们有一个List<Student>类型的列表,可以使用Java8的stream流对它进行遍历、过滤、查询、去重、排序、分组等操作。

1、遍历

使用forEach()方法遍历List中的每一个元素:

List<Student> list = new ArrayList<>();
// 添加元素到list

list.stream().forEach(System.out::println);

2、过滤

使用filter()方法过滤出分数大于80分的同学:

List<Student> list = new ArrayList<>();
// 添加元素到list

List<Student> filteredList = list.stream()
                                 .filter(s -> s.getScore() >= 80.0)
                                 .collect(Collectors.toList());

3、查询

使用findFirst()或findAny()方法查询第一个或任意一个元素:

List<Student> list = new ArrayList<>();
// 添加元素到list

Optional<Student> studentOptional = list.stream()
                                         .filter(s -> s.getName().equals("Tom"))
                                         .findFirst();

4、去重

使用distinct()方法去重

List<Student> list = new ArrayList<>();
// 添加元素到list

List<Student> distinctList = list.stream()
                                 .distinct()
                                 .collect(Collectors.toList());

5、排序

使用sorted()方法对元素进行排序:

List<Student> list = new ArrayList<>();
// 添加元素到list

// 按照分数升序排序
List<Student> sortedList = list.stream()
                               .sorted(Comparator.comparingDouble(Student::getScore))
                               .collect(Collectors.toList());

// 按照年龄降序排序
List<Student> reversedList = list.stream()
                                 .sorted(Comparator.comparingInt(Student::getAge).reversed())
                                 .collect(Collectors.toList());

6、分组

使用groupingBy()方法对元素进行分组:

List<Student> list = new ArrayList<>();
// 添加元素到list

Map<String, List<Student>> groupByMajor = list.stream()
                                              .collect(Collectors.groupingBy(Student::getMajor));

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Java8新特性对List对象进行遍历、过滤、排序等处理 的相关文章

  • List.Except 不起作用

    我尝试减去 2 个列表 如下代码所示 assignUsers已获得 3 条记录assignedUsers有 2 行 后Except方法我仍然得到 3 行 尽管我应该得到 1 条记录 因为 2 行assignedUsers类似于assignU
  • number_in_month 练习(计算列表中的元素数)

    我一直在尝试使用 SML 对整数 3 元组列表中的元素进行计数 该列表等于给定的整数 但它不起作用 谁能帮我找出下面的代码有什么问题或者为我纠正它 fun number in month x int int int list m int i
  • 如何在 F# 中将对象转换为泛型类型列表

    在下面的代码片段中 我的目的是将 System Object 可能是 FSharpList 转换为它所持有的任何泛型类型的列表 match o with list lt gt gt addChildList o gt list lt gt
  • 递归地更改R中嵌套列表中的名称

    我在 R 中的嵌套列表结构中有数据 我想使用查找表来更改名称 无论它们在结构中的位置 例子 build up an example x lt as list c a NA x 1 lt vector list 4 names x 1 lt
  • 如何访问对列表中对的每个元素?

    我有一个名为 对 的列表 pairs a 1 b 2 c 3 我可以通过以下方式访问元素 for x in pairs print x 其输出如下 a 1 b 2 c 3 但我想访问每对中的每个元素 就像在 c 中一样 如果我们使用pair
  • 比较通用列表和数组

    为什么 generic list 比 array 慢 通用列表比数组稍慢 但在大多数情况下您不会注意到 主要与稍微复杂的查找有关 据说 List 在幕后 使用数组 但不能保证以与数组相同的方式将节点保留在相邻内存中 然而 我早在 2005
  • 如何在 Python 中从平面列表构建嵌套列表? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有一个简单的列表 例如 flat 1 1 1 1 1 1 1 2 2 2 1 2 2 3 我需要转换为嵌套列表 其中每个级别 破折号后跟数
  • Python如何拆分列表列表?

    我有一个清单清单 myList 1 2 3 4 5 6 7 8 9 10 我想将其分成三个单独的列表 每个列表都有自己的名称 a 1 2 3 b 4 5 6 c 7 8 9 10 我该怎么做呢 您可以直接解压它 a b c myList
  • 在 Django 中为多个查询编写视图的最佳方法?

    这是一个简单的问题 我已经组织了我的模型 以便提供给页面的大多数对象都属于一种类型 项目 该模型包含各种属性 可以帮助我以不同的方式提供服务 我有文章和视频 它们由模型上的 类型 字段确定 类型 文章 等 我有一个列表视图 它显示项目模型中
  • 在Python中将整数附加到列表的开头[重复]

    这个问题在这里已经有答案了 如何在列表的开头添加一个整数 1 2 3 42 1 2 3 gt gt gt x 42 gt gt gt xs 1 2 3 gt gt gt xs insert 0 x gt gt gt xs 42 1 2 3
  • 如何加快列表理解速度

    以下是我的清单 col red yellow blue red green yellow pink orange brown pink brown 我的目标是消除每个列表中出现一次的项目 这是我的代码 eliminate w for w i
  • 根据 Mathematica 中的另一个列表值拆分列表

    在 Mathematica 中我有一个点坐标列表 size 50 points Table RandomInteger 0 size RandomInteger 0 size i 1 n 以及这些点所属的聚类索引列表 clusterIndi
  • 使用 Linq 返回具有最大计数的列表

    使用 C 和 Linq 如何返回具有最大大小 计数的 List 我假设您有一个名为的列表集合lists并且您想要返回此集合中元素最多的列表 如果是这样 请尝试以下操作 var listWithLargestCount lists Order
  • 我想将对象列表添加到 firestore 文档中,-flutter

    我想将对象列表添加到 firestore 文档 我定义了产品数据模型 我还有类别数据模型 我想将类别列表添加到 firestore 中的产品文档中 我将类别添加到临时列表 然后将值放入product categories 产品 类别 类别t
  • Python-使用元组作为列表索引[重复]

    这个问题在这里已经有答案了 我有一个元组列表 tuples list 1 0 2 3 3 2 2 0 我想访问二维数组的元素a例如 使用其中一些元组 for i in range 3 print a tuples list i 应该输出的值
  • Python 3 中的递归搜索 JSON/DICT

    我在 Python 3 中实现了一些 API 这些 API 允许我根据班级代码接收有关学校的信息 但我想知道如何通过类代码获取信息 例子 我输入代码GF528S我希望程序告诉我班级 3C INF 地址 Address 1 Milan 如果可
  • python中的列表列表的集合

    我有一个列表列表 mat 1 2 3 4 5 6 1 2 3 7 8 9 4 5 6 我想转换成set即删除重复列表并从中创建一个新列表 其中仅包含unique lists 在上述情况下 所需的答案将是 1 2 3 4 5 6 7 8 9
  • 如何在 Java 中获得列表的反向列表视图?

    我想在列表上有一个反向列表视图 与List sublist提供列表上的子列表视图 是否有一些函数可以提供此功能 我不想复制该列表 也不想修改该列表 在这种情况下 如果我能在列表上至少获得一个反向迭代器就足够了 另外 我知道如何自己实现这一点
  • C# 如何单击 IList 中的 IWebelement?

    所以我尝试单击 YouTube 上的按钮 但我无法通过 Xpath 找到该按钮 因为按钮太多 所以我尝试将它们保存在 IList 中 现在我想单击列表中的特定按钮 ChromeDriver chrome new ChromeDriver L
  • 如何在 Haskell 中制作打勾游戏的图案?

    实现有 2 个参数的函数 ticktick 第一个参数是自然数元组 定义游戏场地的行数和列数 第二个列表包含由玩家 x 和玩家 o 轮流玩的坐标给出的井字游戏比赛的记录 打印游戏的实际状态 其中游戏区域将由字符 和 界定 空方块 以及字符

随机推荐

  • windows中的会话概念的总结

    转载请标明是引用于 http blog csdn net chenyujing1234 欢迎大家拍砖 一 参考 http blog csdn net zacklin article details 7579217 以前我一直不理解Windo
  • (三)无人机数据处理算法介绍——目标识别一

    无人机目标识别技术 1 几个相近的概念 图像分割 目标识别 模式识别 目标跟踪 图像分割 根据图像的像素统计特征来对图像进行分割 使得不同类的的图像分开 目标识别 范围广一点 所有的检测目标方法 都可以叫做目标识别 模式识别 当我们采用特定
  • c++ 独一无二的不可拷贝拷贝对象

    方法一 将类的拷贝构造函数和赋值函数只声明 不定义 并定义为 private class A private friend void copy one A const Uncopyable A operator const Uncopyab
  • 简单聊一聊 Spring 事务传播行为和事务隔离级别的那些事

    前言 Spring的事务 也就是数据库的事务操作 符合ACID标准 也具有标准的事务隔离级别 所以Spring的事务隔离级别和事务的传播行为是面试中经常考察的问题 下面简单做下总结 事务并发引发的问题 脏读 一个事务读取到了另一个事务修改但
  • Python记8(tkinter

    目录 1 参考 2 窗口 2 1 创建窗口 Tk 长宽geometry 屏幕宽高 拉伸窗口resizable 窗口名title 循环mainloop 获取窗口大小 2 2 窗口最大化 最小化 正常显示 state iconify attri
  • 知识分享系统

    开发工具 eclipse idea vscode等 数据库 sqlite mysql sqlserver等 功能模块 请用文字描述 至少200字
  • 一般数据库增量数据处理和数据仓库增量数据处理的几种策略

    开篇介绍 通常在数据量较少的情况下 我们从一个数据源将全部数据加载到目标数据库的时候可以采取的策略可以是 先将目标数据库的数据全部清空掉 然后全部重新从数据源加载进来 这是一个最简单并且最直观的并且不容易出错的一种解决方案 但是在很多时候会
  • MYSQL数据库--存储引擎

    前言 数据库存储引擎是数据库底层软件组件 数据库管理系统使用数据引擎进行创建 查询 更新和删除数据操作 简而言之 存储引擎就是指表的类型 数据库的存储引擎决定了表在计算机中的存储方式 不同的存储引擎提供不同的存储机制 索引技巧 锁定水平等功
  • HTTP和HTTPS协议

    HTTP协议 HTTP协议是一种应用层的协议 全称为超文本传输协议 URL URL值统一资源定位标志 也就是俗称的网址 协议方案名 http 表示的就是协议方案名 常用的协议有HTTP协议 HTTPS协议 FTP协议等 HTTPS协议是以H
  • iOS巅峰之点击UIAlertView的灰色部分也能dismiss消失

    UIAlertView alert UITapGestureRecognizer recognizerTap void viewDidLoad super viewDidLoad Do any additional setup after
  • This action could not be completed. Try again.

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 遇到this action could not be completed try again 22421 淡定 解决方法 确保网页上iTunes Connect已经remo
  • 快手投放广告,快手广告优势有哪些呢?

    快手在短视频领域已积累大量忠实用户 形成为独特的社区文化和 老铁经济 虽然商业化进程谨慎而缓慢 但从长远来看 兼顾用户体验的商业需求也许有利于平台商业化的持续发展 对于创作者来说 在入驻一个新平台之前 需要对平台的整体调性全面了解 快手是更
  • 软件工程第一节课 课程引言

    课程引言 一 需要网站系统开发需要掌握的技术 网站的开发技术有很多 主要包括CGI ASP PHP JSP ASP NET等 每一种技术都有其自身的特点与局限性 具体的网站开发技术要根据网站的功能需求 面对的受众 访问量 开发者熟悉的技术等
  • 开源协议说明LGPL

    文章目录 闭源程序 LGPL 闭源程序 不以某种形式开放源代码 也就是说 用户 包括其他开发者 不能获取其源代码的程序 LGPL LGPL协议是一个商业友好的协议 这里的含义是 你可以用 LGPL协议开发商业程序 当然也可以是非商业的闭源程
  • Android最常用八种加密算法

    原文链接 http blog csdn net smartbetter http blog csdn net u013718120 article details 56486408 项目地址 https github com Yalanti
  • 大一python字典作业

    1 字典操作综合练习一 定义一个字典 goods Apple 4999 华为 3600 Vivo 2999 OPPO 3200 三星 4300 向字典新增一个 小米 手机 价格为2800 将字典中 华为 品牌手机价格修改为3999 输入任一
  • Linux网络设备的系统调用

    转自 http www tuicool com articles QJfmUr 在用户层上的程序 建立本地socket后 使用ioctl读取phy芯片的寄存器 ioctl sockfd SIOCGMIIREG ifr 下面是linux的网络
  • html 快捷输入代码

    快捷输入代码 输入 html 5 回车 输入 div 数量 如 d
  • sklearn学习——特征处理

    sklearn学习 特征处理 特征提取 feature extraction 从文字 图像 声音等其他非结构化数据中提取新信息作为特征 比如说 从淘宝宝贝的名称中提取出产品类别 产品颜色 是否是网红产品等等 特征创造 feature cre
  • 使用Java8新特性对List对象进行遍历、过滤、排序等处理

    使用java8 新特性stream流对List对象进行遍历 过滤 查询 去重 排序 分组 新建一个名为Student的类 包含以下属性 public class Student private String name private int