Java 8使用Steam().map()提出List对象的某一列的值及重新排序

2023-11-17

这几天遇到一个这样的问题,本来想着是从map中拿到数据在遍历出来的的,但是显得自己很麻烦,于是找了很多方式,测试各个方法的可用性,这里就简单记录一下一些Java8里面的好用的一些方法。

Java8 使用 stream().map()提取List对象的某一列值及排重 - 代码猫 - 博客园

Java8 使用 stream().map()提取List对象的某一列值及排重

List对象类(StudentInfo)

public class StudentInfo implements Comparable<StudentInfo> {

    //名称
    private String name;

    //性别 true男 false女
    private Boolean gender;

    //年龄
    private Integer age;

    //身高
    private Double height;

    //出生日期
    private LocalDate birthday;

    public StudentInfo(String name, Boolean gender, Integer age, Double height, LocalDate birthday){
        this.name = name;
        this.gender = gender;
        this.age = age;
        this.height = height;
        this.birthday = birthday;
    }

    public String toString(){
        String info = String.format("%s\t\t%s\t\t%s\t\t\t%s\t\t%s",this.name,this.gender.toString(),this.age.toString(),this.height.toString(),birthday.toString());
        return info;
    }

    public static void printStudents(List<StudentInfo> studentInfos){
        System.out.println("[姓名]\t\t[性别]\t\t[年龄]\t\t[身高]\t\t[生日]");
        System.out.println("----------------------------------------------------------");
        studentInfos.forEach(s->System.out.println(s.toString()));
        System.out.println(" ");
    }

    @Override
    public int compareTo(StudentInfo ob) {
        return this.age.compareTo(ob.getAge());
        //return 1;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Boolean getGender() {
        return gender;
    }

    public void setGender(Boolean gender) {
        this.gender = gender;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Double getHeight() {
        return height;
    }

    public void setHeight(Double height) {
        this.height = height;
    }

    public LocalDate getBirthday() {
        return birthday;
    }

    public void setBirthday(LocalDate birthday) {
        this.birthday = birthday;
    }
}
StudentInfo对象类

测试数据

//测试数据,请不要纠结数据的严谨性
List<StudentInfo> studentList = new ArrayList<>();
studentList.add(new StudentInfo("李小明",true,18,1.76,LocalDate.of(2001,3,23)));
studentList.add(new StudentInfo("张小丽",false,18,1.61,LocalDate.of(2001,6,3)));
studentList.add(new StudentInfo("王大朋",true,19,1.82,LocalDate.of(2000,3,11)));
studentList.add(new StudentInfo("陈小跑",false,17,1.67,LocalDate.of(2002,10,18)));

提取某一列(以name为例)

//输出List
StudentInfo.printStudents(studentList);
//从对象列表中提取一列(以name为例)
List<String> nameList = studentList.stream().map(StudentInfo::getName).collect(Collectors.toList());
//提取后输出name
nameList.forEach(s-> System.out.println(s));

输出结果如下图:

 提取age列并排重(使用distinct()函数)

//提取前输出
StudentInfo.printStudents(studentList);
//从对象列表中提取age并排重
List<Integer> ageList = studentList.stream().map(StudentInfo::getAge).distinct().collect(Collectors.toList());
ageList.forEach(a-> System.out.println(a));

结果如下图:

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

Java 8使用Steam().map()提出List对象的某一列的值及重新排序 的相关文章

  • java.lang.VerifyError:JVMVRFY012堆栈形状不一致;

    在 WAS 8 5 5 中部署 Maven 项目时出现以下错误 我在WAS中安装了JDK 1 6和1 7 错误500 org springframework web util NestedServletException 处理程序处理失败
  • 在 Java 正则表达式中获取多个模式的重叠匹配

    我有同样的问题这个链接 https stackoverflow com questions 18751486 matching one string multiple times using regex in java 但有多种模式 我的正
  • 重写 getPreferredSize() 会破坏 LSP

    我总是在这个压倒一切的网站上看到建议getPreferredSize 而不是使用setPreferredSize 例如 如前面的线程所示 对于固定大小的组件 使用重写 getPreferredSize 而不是使用 setPreferredS
  • Java 卡布局。多张卡中的一个组件

    一个组件 例如JLabel 在多张卡中使用CardLayout 目前看来该组件仅出现在它添加到的最后一张卡上 如果有办法做到这一点 我应该吗 这是不好的做法吗 或者有其他选择吗 你是对的 它只出现在 添加到的最后一张卡 中 但这与CardL
  • 即使在轴上进行自动量程调整,我也可以保留积分刻度线吗?

    我 偷 了一些代码here http fxexperience com 2012 01 curve fitting and styling areachart 拥有一个AreaChart我在 FXML 中使用了 平滑线条 它的工作原理如下
  • 在哪里保存选项值、重要文件的路径等[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在创建一个程序 需要设置一些选项值以及图像文件的一些路径 SQLite 数据库的路径 有关各种按钮上文本的一些信息 有关要使用哪个数据库的信
  • 无法访问“不安全”java方法的java表达式语言

    我正在开发一个项目 让用户向服务器提交小 脚本 然后我将执行这些脚本 有很多脚本语言可以嵌入到Java程序中 例如mvel ognl uel clojure rhino javascript等 但是 据我所知 它们都允许脚本编写者调用Jav
  • 记录共享和映射的诊断上下文

    据我所知 其他人做了什么来解决 Commons Logging 项目 针对 NET 和 Java 不支持映射或嵌套诊断上下文这一事实 执行摘要 我们选择直接使用实现者日志框架 在我们的例子中为 log4j 长答案 您是否需要一个抽象日志框架
  • 如何在 MSSQL 中获取 CURRENT_DATE?

    我正在使用 jpa 3 o 和 Hibernate 我有一个命名查询 SELECT COUNT wt id FROM WPSTransaction wt WHERE wt createdDate gt CURRENT DATE WPSTra
  • 如何在 HandlerInterceptorAdapter 中添加 HttpServletRequest 标头?

    我正在尝试将授权标头添加到我的请求中 作为我们切换环境时的临时解决方法 我试图在扩展 HandlerInterceptorAdapter 的拦截器中处理它 我使用 MutableHttpServletRequest 类制作here http
  • 无法在 Java 中输出正确的哈希值。怎么了?

    在我的 Android 应用程序中 我有一个 SHA256 哈希值 我必须使用 RIPEMD160 消息摘要算法进一步对其进行哈希值 我可以输出任何字符串的正确 sha256 和ripemd160 哈希值 但是当我尝试使用ripemd160
  • Java:SortedMap、TreeMap、可比较?如何使用?

    我有一个对象列表 需要根据其中一个字段的属性进行排序 我听说 SortedMap 和 Comparator 是实现此目的的最佳方法 我是否要与正在排序的类实现 Comparable 还是创建一个新类 如何实例化 SortedMap 并传入
  • 插入时的 iBatis 判别器

    我有一个抽象类Example以及与之相伴的具体子类 我使用鉴别器来提取数据out数据库的 像这样
  • 纱线上的火花,连接到资源管理器 /0.0.0.0:8032

    我正在我的开发机器 Mac 上编写 Spark 程序 hadoop的版本是2 6 spark的版本是1 6 2 hadoop集群有3个节点 当然都在linux机器上 我在idea IDE中以spark独立模式运行spark程序 它运行成功
  • 在 Java 中创建 XML 文件的最佳方法是什么?

    我们目前使用 dom4j 来创建 XML 文件 不过 我猜现在有更好的东西了 如果我们使用的是 Java 1 6 或更高版本 那么在编写 XML 文件时最好使用什么类 运行速度最快 使用简单 我不需要构建一个 DOM 然后编写整个 DOM
  • Java 中 JButton 的击键/热键

    最初我使用 JMenu 并建立热键以使用加速器工作 它运行得很好 现在我想在 JButton 中实现相同的行为 但我陷入困境 这是我编写的代码 请分享您的想法 以便我可以走上正确的道路 import javax swing import j
  • 使用单独的线程在java中读取和写入文件

    我创建了两个线程并修改了 run 函数 以便一个线程读取一行 另一个线程将同一行写入新文件 这种情况会发生直到整个文件被复制为止 我遇到的问题是 即使我使用变量来控制线程一一执行 但线程的执行仍然不均匀 即一个线程执行多次 然后控制权转移
  • 如何以编程方式创建 CardView

    我正在开发一个 Android 应用程序Java Android Studio 我想在活动中创建CardView以编程方式 我想将以下属性设置为CardView layout width wrap content layout row 0
  • java.lang.IllegalStateException - 提交响应后无法创建会话

    我在我的项目中使用 JSF PrimeFaces 我为此准备了一个Maven项目 当我编译项目并加载主页后 我收到以下异常 java lang IllegalStateException Cannot create a session af
  • Java/MongoDB 按日期查询

    我将一个值作为 java util Date 存储在我的集合中 但是当我查询以获取两个特定日期之间的值时 我最终得到的值超出了范围 这是我的代码 插入 BasicDBObject object new BasicDBObject objec

随机推荐

  • SSM到底学了什么--SSM回顾

    SSM回顾 学习完MyBatis Spring和SpringMVC 个人进行一下回顾 看看还能记住多少 重点的地方一定要闭着眼睛都要写出来的 前面的笔记做得很详细 那里忘了点哪里哈哈哈哈 MyBatis框架笔记 Spring框架笔记 Spr
  • 超详细的Linux环境下使用git上传代码教程(gitee版)

    git是一个版本控制器 我们使用它上传我们以前写过的代码给他进行托管 更为方便以后找到 同时也方便我们找到我们每次更改了什么 创建仓库 使用 git 命令行 Linux下的操作 git三板斧 在远端修改了文件push不了怎么办 删除仓库已提
  • 29岁总结复盘

    1 qt界面图片上加文字 2 mysql查询最新一百条数据 3 线程操作数据库死锁了怎么做 4 qt元 连接第五个参数 5 项目框架 整体把控 6 opencv 7 视频采集卡 8 做事要有深度 这才是你的价值 可以说计算机领域多数情况下就
  • 一个简单的WebService实例

    WebService在 NET平台下的作用是在不同应用程序间共享数据与数据交换 要达到这样的目标 Web services要使用两种技术 XML 标准通用标记语言下的一个子集 XML是在web上传送结构化数据的伟大方式 Web servic
  • 安装配置qt_eventdispatcher_libevent

    QT默认的是使用select模型的 这种轮询方式非常慢 在高并发连接 我们需要epoll才能发挥linux服务器的性能 安装qt eventdispatcher libevent 下载安装包后 解压 找到src目录 用Qt打开pro工程 然
  • matplotlib绘图系列----pie饼图

    使用plt pie绘制饼图 绘制饼图我们用matplotlib pyplot pie 我们先看下他的基本参数 下面结合实例演示基本用法 coding utf 8 加入中文显示 import matplotlib pyplot as plt
  • QGIS开发--小例子

    文接上篇 上次说到QGIS开发小插件的问题 讲了插件怎么开发 开发好了放哪个地方 界面怎么设置 代码怎么关联 并且遗留了一些小问题 就是怎么添加多个界面 怎么实现界面跳转 这篇文章主要就是解决这个问题的 这次内容有两个 1 界面关联 跳转
  • 大数据开发教程——ZooKeeper分布式协调组件

    ZooKeeper是什么 ZooKeeper是一个分布式的 开放源码的分布式应用程序协调服务 是Google的Chubby一个开源的实现 是Hadoop和Hbase Flink的重要组件 中文名 动物管理员 它是一个为分布式应用提供一致性服
  • MySQL(十四)—— 表的一些操作

    MySQL数据库系列内容的学习目录 rightarrow 老杜带你学MySQL学习系列内容汇总 14 表的一些操作 14 1 insert 语句一次插入多条记录 14 2 快速创建表 14 3 将查询结果插入到一张表当中 14 4 快速删除
  • 计算机网络 期末复习#1

    计算机网络 期末复习 1 大题 1 总时延 数据 速率 带宽 2 循环冗余检测CRC 3 无分类编制CIDR 构造超网 4 使用子网时分组转发 5 距离向量算法 6 拥塞控制 慢开始算法 7 路由器 以太网 1 总时延 有一个长度为 100
  • Python进阶篇

    大家好 我是易安 今天我们继续Python的学习 内容稍微有些多 不过我会尽可能举一些例子让你理解 对象比较与拷贝 在前面的学习中 我们其实已经接触到了很多 Python对象比较和复制的例子 比如下面这个 判断a和b是否相等的if语句 if
  • 06-PS中的四种蒙版

    Photoshop中的蒙版就是遮罩的意思 主要作用就是将其所在的图层 把不同的明暗度转化成相应的透明度 黑色为完全透明 灰色为半透明 白色为完全不透明 添加蒙版有便于灵活修改 不影响图层原貌 PS蒙版有四类 图层蒙版 剪切蒙版 矢量蒙版 快
  • Nmap食用指北

    Nmap食用指北 Nmap简介 Nmap Network mapper 是目前最流行的网络扫描工具 它不仅能够准确地探测单台主机的详细情况 而且能够高效率地对大范围IP地址段进行扫描 使用Nmap能够得知目标网络上哪些主机是存活的 以及哪些
  • 新闻网大数据实时分析可视化系统项目——10、数据采集/存储/分发完整流程测试...

    一 idea工具开发数据生成模拟程序 1 在idea开发工具中构建weblogs项目 编写数据生成模拟程序 package main java import java io public class ReadWrite static Str
  • LeetCode 面试题 03.02. 栈的最小值

    文章目录 一 题目 二 C 题解 一 题目 请设计一个栈 除了常规栈支持的 pop 与 push 函数以外 还支持 min 函数 该函数返回栈元素中的最小值 执行 push pop 和 min 操作的时间复杂度必须为 O 1 点击此处跳转题
  • 面试题:6种解法-顺序打印A1B2C3

    金不三 银不四的高频面试题 Java 中顺序打印 A1B2C3 是多线程中的一个经典面试问题 其解决方法可以锻炼程序员的多线程编程能力 本文将从多个角度 介绍 Java 中顺序打印 A1B2C3 的实现方式 总共分为如下6种方式 synch
  • VAE-GAN学习记录

    一 遇到的问题以及学习目的 学习VAE GAN主要是因为最近在做故障诊断相关的东西 之前在某篇论文里得知 使用GAN算法时 可以使用判别损失 重构损失对异常样本进行检测 然而 那篇论文 基于 LSTM GAN 的加油时序数据异常检测 里面
  • SpringBoot数据库连接池Hikari配置

    在项目中 一般情况下访问数据库 会创建一个连接 用完后就关闭它 对于简单的系统这样不会带来什么明显的性能上的开销 但是对于一个复杂的系统 频繁的建立 关闭连接 会极大的减低系统的性能 因为对于数据库连接的使用可能会成为系统性能的瓶颈 数据库
  • MATLAB2017a使用FasterRcnn目标检测训练及其测试流程

    本文在matlab2017a已有的FasterRcnn算法基础上来检测人群 流程比较简单 对一些初学者来说比较容易理解和操作 1 安装所需要的软硬件环境 1 1 硬件环境 CPU Intel i5 GPU GTX940m 内存 4G 硬盘
  • Java 8使用Steam().map()提出List对象的某一列的值及重新排序

    这几天遇到一个这样的问题 本来想着是从map中拿到数据在遍历出来的的 但是显得自己很麻烦 于是找了很多方式 测试各个方法的可用性 这里就简单记录一下一些Java8里面的好用的一些方法 Java8 使用 stream map 提取List对象