技术标签: lambda java stream 新手博客 后端
利用java8 lambdas语言特性处理如下java集合对象,
为了方便描述对象用json表示为[{id:1,name:null},{id:1,name:”liwei”},{id:2,name:”zhansan”},{id:2,name:”lisi”}]
期望处理后的集合对象为[{id:1,name:[liwei]},{id:2, name:[zhansan,lisi] }]
具体代码实现如下:
//创建Person实体类:
public class Person {
private Integer id;
private String name;
public Person(Integer id) {
this.id = id;
}
public Person() {
}
public Person(Integer id, String name) {
this.id = id;
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
创建接收处理后的对象类:
public class PersonV2s {
private Integer id;
private List<String> names;
public PersonV2s(Integer id, List<String> names) {
this.id = id;
this.names = names;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public List<String> getNames() {
return names;
}
public void setNames(List<String> names) {
this.names = names;
}
}
public class LambdaDemo2 {
@Test
public void test() {
List<Person> personList = Arrays.asList(
new Person(1),
new Person(1, "liwei"),
new Person(2, "zhansan"),
new Person(2, "lisi")
);
final Map<Integer, List<String>> map
= personList.stream().collect(Collectors.groupingBy(Person::getId, Collectors.mapping(Person::getName, Collectors.toList())));
final List<PersonV2s> personV2ss
= map.entrySet().stream().map(p -> new PersonV2s(p.getKey(), p.getValue().stream().filter(Objects::nonNull).collect(Collectors.toList()))).collect(Collectors.toList());
System.out.println(personV2ss.toString());
}
}
文章浏览阅读1.4w次,点赞12次,收藏32次。英文名称中文名称图片BUTTON复位开关Resistors电阻crystal晶振_proteus 8 professional元器件对照表
文章浏览阅读1k次。gcc -o pcieinject ./pcietest_hypcie.c ./pcietest_parse.c ./pcietest_pcie.c ./pcietest_pcieaer.c smnlib/hygon_smn.c -O0 -g -Wall -D LITTLEENDIAN_CPU -I comlib -I pcilib -I smnlib -L ./pcilib/lib -Wl,-B..._pciutils
文章浏览阅读57次。为什么80%的码农都做不了架构师?>>> ...
文章浏览阅读2.6k次。您可以使用java反射包访问类的私有方法。步骤1-通过传递声明为私有的方法的方法名称来实例化java.lang.reflect包的Method类。步骤2-通过将值true传递给setAccessible()方法来设置可访问方法。步骤3-最后,使用invoke()方法调用该方法。示例importjava.lang.reflect.Method;publicclassDemoTest{priv..._私有类型如何访问方法
文章浏览阅读224次。简介:数据库的操作:1.用 SHOW 显示已有的数据库show databases 2.创建数据库:create database 创建数据库create database db_name3.删除数据库:drop databse db_name4.use 选定数据库.use db_name 数据表的操作:1.show/de ...数据库的操作:1.用 SHOW 显示已有的数据库show datab..._mysql6.3
文章浏览阅读1k次。用opencv的aruco库生成二维码marker标记代码来源于官方提供的完整的工作实例create_marker.cpp。在opencv源码中的位置为opencv_contrib-4.4.0/modules/aruco/samples/create_marker.cpp。#include <opencv2/highgui.hpp>#include <opencv2/aruco.hpp>#include <iostream>using namespace cv_树莓派opencv识别aruco二维码
文章浏览阅读1.2w次,点赞17次,收藏88次。利用Python的turtle库实现一个动画Turtle库是Python内置的图形化模块,是绘制图像的函数库。海龟即屏幕上绘图的光标(小三角形),编写Python指令可以让海龟在屏幕上移动绘制线条,可将海龟看做是坐标系里移动,位置可用坐标表示(x,y)。基于turtle的动画,动画可以理解为由一张张快速切换而成:1、准备工作:设置speed为0(最快,不显示海龟动态);隐藏海龟——h..._python turtle 动画
文章浏览阅读3.1k次。linux vim块/整行操作快捷键_vim ctrl v
文章浏览阅读360次,点赞3次,收藏6次。探秘ESP8266与React结合的智能硬件项目:GitCode上的rjwats/esp8266-react项目地址:https://gitcode.com/rjwats/esp8266-react项目简介在物联网(IoT)的世界中,ESP8266是一个著名的低成本、高性能的Wi-Fi微控制器,常被用于构建各种智能家居设备和DIY项目。而React作为前端开发的主流框架,以其组件化和虚拟DO...
文章浏览阅读3.4k次。arm64以及amd64和龙芯4000下安装pyqt:包下载地址:sip安装包地址:https://riverbankcomputing.com/software/sip/downloadqt源码下载 http://download.qt.io/arhive/qt/2.7下安装pyqt5:https://www.cnblogs.com/deeplearning1314/p/10671347.html参考编译链接:linux下安装qt:https://blog.csdn.net/u01452338_generating the c++ source for the qtcore module...error: unable to create th
文章浏览阅读4.3w次,点赞35次,收藏150次。本篇博文讲讲 Qt Creator 使用方法,分享三种将UI界面文件编译为Python文件的方法。_pyqt ui转py
文章浏览阅读1.2k次,点赞4次,收藏6次。Flask_FileUpload由题目名得知的信息,显然是个文件上传的题目,flask:一种python的web框架首先Ctrl+U查看页面源代码,一般能看到题目提示支持jpg,png格式的文件上传,绿色的英文提示意思是上传文件,它会解析python代码并返回运行结果,所以上传php木马的并不能成功在txt文档中写一段py程序来调用系统命令导入 os模块 pyhon的os模块包含了普通的系统操作功能,这里os.system('')执行了ls命令因为上传有格式的限制,所以要重命_ctf 3-11