Java 8————Collectors中的中的joining 方法和mapping方法

先定义好后面做示例要用的数据:

List<User> listUser = new ArrayList<>();
listUser.add(new User("李白", 20, true));
listUser.add(new User("杜甫", 40, true));
listUser.add(new User("李清照", 18, false));
listUser.add(new User("李商隐", 23, true));
listUser.add(new User("杜牧", 39, true));
listUser.add(new User("苏小妹", 16, false));

这个User就是一个普通的Bean对象,有name(姓名)、age(年龄)、gender(性别)三个属性及对应的set/get方法。

joining 方法

 joining 方法定义
从 joining 方法的定义可以看到,这里重载了3个 joining 方法:无参数,1个参数,3个参数。然后从参数命名上看delimiter-分隔符、prefix-前缀、suffix-后缀大约可以猜出参数的作用了,然后再看注释的参数说明

Returns a {@code Collector} that concatenates the input elements,separated by the specified delimiter, with the specified prefix and suffix, in encounter order.

果然如是,下面是举例说明。

将指定的值join成字符串

String join1 = listUser.stream().map(User::getName).collect(Collectors.joining());
System.out.println("join后的结果:" + join1); // 输出==》 李白杜甫李清照李商隐杜牧苏小妹

将List中的用户名join成中间用","分隔的字符串

String join2 = listUser.stream().map(User::getName).collect(Collectors.joining(","));
System.out.println("join后的结果:" + join2); // 输出==》李白,杜甫,李清照,李商隐,杜牧,苏小妹

将List中的用户名join成以前缀是"{",后缀是"}",中间用","分隔的字符串

String join3 = listUser.stream().map(User::getName).collect(Collectors.joining(",", "{", "}"));
System.out.println("join后的结果:" + join3); // 输出==》{李白,杜甫,李清照,李商隐,杜牧,苏小妹}

mapping方法

mapping方法的定义如图
mapping方法定义
方法有2个参数,Function类型的mapper和Collector类型的downstream。通过注释可以看到方法是通过参数mapper函数来处理List中的每一个数据,然后用downstream来将处理后的数据收集起来。举例说明:

取出List中所有人的姓名放到一个新的List中去

// 定义一个入参为User,返回String的函数
Function<User,String> mapper=(user)->{return user.getName();
};
List<String> userNames = listUser.stream().collect(Collectors.mapping(mapper, Collectors.toList()));

以上代码再简写一下:

List<String> userNames = listUser.stream().collect(Collectors.mapping((user)->{return user.getName();}, Collectors.toList()));

也可以写成这样:

List<String> userNames = listUser.stream().collect(Collectors.mapping(User::getName, Collectors.toList()));

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556129.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BOM -- browser object model

操作浏览器窗口 一、 innerWidth / innerHeight 获取浏览器可视区的宽高(不包含开发者工具区域) window.innerWidth px window.innerHeight px二、 outerWidth / outerHeight 获取浏览器软件界面的宽高 window.outerWidth px window.outerHeight px三、 screenTop / scr…

vue 拓扑组件_vue 集成 vis-network 实现网络拓扑图的方法

vis.js 网站https://visjs.org/vs code 下安装命令npm install vis-network在vue 下引入 vis-network组件const vis require("vis-network/dist/vis-network.min.js");require("vis-network/dist/vis-network.min.css");例子代码使用let DIR "/jtop…

编译器说 Lambda 表达式中的变量必须是 final 的,我偏不信

偶尔&#xff0c;我们需要在 Lambda 表达式中修改变量的值&#xff0c;但如果直接尝试修改的话&#xff0c;编译器不会视而不见听而不闻&#xff0c;它会警告我们说&#xff1a;“variable used in lambda expression should be final or effectively final”。 这个问题发生的…

window 事件

一、 onscroll ⇒ 页面滚动是事件 // 当页面发生滚动就会触发这个事件 window.onscroll function () {console.log(我会随着鼠标滚动改变); }二、 onresize ⇒ 窗口改变事件 // 当窗口大小发生改变就会触发这个事件 window.onresize function () {console.log(我会随着窗口…

pandas series取值_【小学生级】pandas入门到精通备查表——AI未来系列3

在未来面前&#xff0c;每个人都是学生江海升月明&#xff0c;天涯共此时&#xff0c;关注江时&#xff01;引子篇为AI未来系列第三篇&#xff0c;中阶部分开始。pandas的数据分析功能比excel强太多&#xff0c;基本上学会pandas&#xff0c;走遍天下都不怕。这是我的备查字典&…

java中为final变量赋值的几种方式

java中为final变量赋值的几种方式 前言 使用final修饰变量&#xff0c;很多人第一时间想到的就是不可变。然后以为变量必须得在声明的时候就为其赋初始值&#xff0c;其实不然&#xff0c;本文将详细讲解java中使用final修改的变量的赋值问题。 被final修饰的变量的几种赋值方…

instanceof 和 对象转型

一、instanceof 判断某个对象是否属于某个类 father1 instanceof Father; // true// 如果有子类继承父类的话 son instanceof Father; // true二、对象转型 子转父 > 自动转&#xff08;向下转型&#xff09; 父转子 > 强转&#xff08;向上转型&#xff09; 三、Obj…

java类验证和装载顺序_Java JVM类加载顺序详解

首页 > 基础教程 > 基础知识 > JDK&JRE&JVMJava JVM类加载顺序详解JVM加载就是寻找一个类或是一个接口的二进制形式并用该二进制形式来构造代表这个类或是这个接口的class对象的过程&#xff0c;其中类或接口的名称是给定了的。当然名称也可以通过计算得到&am…

从lambda表达式看final关键字

Variable used in lambda expression should be final or effectively final 想必大家在开发java程序的时候应该经常见到。 这是因为在lambda的匿名表达式里需要传入final的对象&#xff0c;那么这是为什么呢&#xff1f; 因为lambda是匿名表达式&#xff0c;它是在新开的一个…

linux中负载值为多少正常_Linux系统中load average平均负载

系统平均负载被定义为在特定时间间隔内运行队列中的平均进程数。如果一个进程满足以下条件则其就会位于运行队列中&#xff1a;1)它没有在等待I/O操作的结果2)它没有主动进入等待状态(也就是没有调用wait)3)没有被停止(例如&#xff1a;等待终止)英译文&#xff1a;http://blog…

lambda里面赋值局部变量必须是final原因

public class LambdaTest {public static void main(String ... args){int portNumber 1337;Runnable r ()-> {portNumber 1338;System.out.println(portNumber);};r.run();} }如上代码&#xff0c;lambda里面要访问局部变量会报如照片错误&#xff1a; 在介绍为什么会报…

classin安卓手机安装条件_ClassIn上课官方软件下载-ClassIn安卓版本 v3.0.7.1_5577安卓网...

ClassIn上课官方软件下载分享给大家。ClassIn在线互动教室是一对多直播互动教学平台&#xff01;培养学习能力更强大的学习者&#xff01;班级群课下互动答疑收发作业&#xff01;记录学习成长历程&#xff0c;展示学习成果&#xff01;【软件说明】欢迎使用ClassIn&#xff01…

lambda表达式或者匿名函数中为什么要求外部变量为final

1、参考博客 关于Lambda表达式里面修改外部变量问题JDK8之前&#xff0c;匿名内部类访问的局部变量为什么必须要用final修饰 2、匿名内部类 在jdk7之前&#xff0c;匿名内部类访问外部类的局部变量时&#xff0c;那么这个局部变量必须用final修饰符修饰&#xff0c;如下图1所…

location 和 history

Location 对象&#xff1a;封装了浏览器地址栏的 URL 信息 一、hash 返回 URL 中 hash(#后跟零个或者多个字符), 如果不包含, 返回空字符串 # 位置标识符 : 当前页面的位置信息, 比如: 跳转顶部 console.log(location.hash); // ""二、host : 返回服务器名称和端口…

ble芯片 全称_蓝牙芯片都有哪些厂商?一文解答

蓝牙5新标准是蓝牙技术自1999年诞生以来推出的第十个标准版本。其性能上大幅提升&#xff0c;可归结为&#xff1a;更快、更长、更给力&#xff0c;非常适合运用于无线可穿戴、工业和智能家居等领域。但蓝牙技术产品能否真正进人批量生产在于芯片制造技术能否跟得上&#xff0c…

你知道Java中final和static修饰的变量是在什么时候赋值的吗?

开始 一位朋友在群里问了这样一个问题&#xff1a; 本着乐于助人的想法&#xff0c;我当时给出的回答&#xff1a; 后来我总觉得哪里不对劲&#xff0c;仔细翻阅了《Java虚拟机规范》和《深入理解Java虚拟机》这一部分的内容&#xff0c;害&#xff01;发现自己理解的有问题。…

获取元素大小和位置的方式

一、直接获取元素样式属性值 – element.style.width console.log(div.style.width); // 500px console.log(parseInt(div.style.width)); // 500 console.log(typeof (div.style.width)); // string二、Offset 偏移量 offsetWidth width padding border offsetHeight he…

mybatis 取查询值_MyBatis-SELECT基本查询

1、返回一个LISTselect * from tbl_employee where last_name like #{lastName}2、将查询记录封装为一个Mapselect * from tbl_employee where id#{id}返回一条记录的map&#xff1b;key就是列名&#xff0c;值就是对应的值。3、多条记录封装为一个mapMapKey("id")pu…

ES6 里面的 class

ES5 对象的写法 let x 10,y 20;const obj {x: x,y: y,sum: function () {return this.x this.y;} };ES6 对象的写法 const obj {x,y,sum() {return this.x this.y;} };class 有点类似 java 的 class class Person { // 类名大写// 私有属性和方法 写在 construtor 里面…

normalize函数_Pandas 数据处理(一) —— 几个简单函数掌握!

对于 Pandas&#xff0c; 接触过 Python 数据处理的小伙伴们都应该挺熟悉的&#xff0c;做数据处理不可或缺的一个程序包&#xff0c;最大的特点高效&#xff0c;本篇文章将通过案例介绍一下 Pandas 的一些基础使用&#xff01;1&#xff0c;读入数据大部分数据都可以用 read_c…