,,jdk8使用stream实现两个list集合合并成一个(对象属性的合并)

,,jdk8使用stream实现两个list集合合并成一个(对象属性的合并)

本文主要介绍了jdk8使用溪流实现两个目录集合合并成一个(对象属性的合并),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

目录

一、前言二、示例示例1:java8合并两个列表<地图>示例2:java8合并两个列表示例3:java8合并两个列表,集合个数前者小于后者,要后者示例4:java8合并两个列表,集合个数前者大于后者,要后者Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)使用溪流实现目录中对象属性的合并:根据两个目录中的某个相同字段合并成一条列表,包含两个目录中的字段

一、前言

为什么要用希腊字母的第11个表达式和溪流流做集合的处理?因为效率高、代码简洁、高端大气上档次!

(1)描述:比如一个目录集合中目录对象1,该对象一包含甲、乙和C列;另外一个目录集合中目录对象2,该对象2包含a、D列;

(2)问题:需要将两个目录合成目录对象3返回,该对象3包含甲、乙、丙、丁列

(3)实现:使用溪流实现两个目录集合合并成一个目录集合

简要说明:filter的使用方式为: filter(item - item的逻辑判断 ) ,其中filter会保留判断条件为true的记录

二、示例

示例1:java8 合并两个 listmap

java8 合并两个 listmap, 并将userId 相同的所有属性合并到一个map中

列表一中对象的属性:用户身份证,用户名

列表2中对象的属性:用户身份证,性别、年龄

最总集合中对象的属性:用户身份证,用户名、性别、年龄

导入Java。util。*;

导入Java。util。溪流。收藏家;

/**

* @作者qzz

*/

公共类列表测试{

公共静态void main(String[] args) {

合并列表();

}

/**

* @描述:合并两个列表地图,并将使用者辩证码相同的其它属性合并

* @Title: mergeList

* @param: @return

* @return: ListMapString,Object

* @次投掷

*/

public static ListMapString,Object mergeList(){

//构建目录集合一

ListMapString,Object list 1=new ArrayList();

MapString,Object data=new HashMap();

data.put('userId ',' 100001 ');

data.put('用户名','唐僧');

list1.add(数据);

data=new HashMap();

data.put('userId ',' 100002 ');

data.put('用户名','八戒');

list1.add(数据);

data=new HashMap();

data.put('userId ',' 100003 ');

data.put('用户名','悟空');

list1.add(数据);

data=new HashMap();

data.put('userId ',' 100004 ');

data.put('用户名','沙僧');

list1.add(数据);

//构建目录集合2

ListMapString,Object list 2=new ArrayList();

data=new HashMap();

data.put('userId ',' 100001 ');

data.put('性别','男');

data.put('年龄',20);

list2.add(数据);

data=new HashMap();

data.put('userId ',' 100002 ');

data.put('性别','雄');

data.put('年龄',1000);

list2.add(数据);

data=new HashMap();

data.put('userId ',' 100003 ');

data.put('性别','雄');

data.put('年龄',600);

list2.add(数据);

data=new HashMap();

data.put('userId ',' 100004 ');

data.put('性别','男');

data.put('年龄',800);

list2.add(数据);

//使用溪流流把列表一和列表2根据属性使用者辩证码合并一个目录集合

ListMapString,Object list=list1.stream().地图(m - {

list2.stream().过滤器(m2-对象。equals(m . get(' userId ')、m2.get('userId ').forEach(m2- {

' m.put('性别,m2.get('性别'));

' m.put('年龄),m2.get('年龄');

});

返回m;

}).收藏(收藏者。to list());

对于(映射字符串,对象映射:列表){

系统。出去。println(地图。tostring());

}

退货单;

}

}

合并运行结果:

示例2:java8 合并两个 listT

java8 合并两个 listT, 并将tickeId相同的所有属性合并到一个T中

列表一中对象的属性:ticketId、ticketName

列表2中对象的属性:ticketId、saleNum、batchAvailableNum

最总集合中对象的属性:ticketId、ticketName、saleNum、batchAvailableNum

导入Java。util。*;

导入Java。util。溪流。收藏家;

/**

* @作者qzz

*/

公共类列表测试1 {

公共静态void main(String[] args) {

合并列表();

}

/**

* @描述:合并两个listTicket,并将ticketId相同的其它属性合并

* @Title: mergeList

* @param: @return

* @return: ListTicket

* @次投掷

*/

公共静态ListTicket mergeList(){

//构建目录集合一

list ticket list 1=new ArrayList();

车票数据=新车票();

数据。setticketid(' 100001 ');

data.setTicketName('唐僧');

list1.add(数据);

data=new Ticket();

数据。setticketid(' 100002 ');

data.setTicketName('八戒');

list1.add(数据);

data=new Ticket();

数据。setticketid(' 100003 ');

data.setTicketName('悟空');

list1.add(数据);

data=new Ticket();

数据。setticketid(' 100004 ');

data.setTicketName('沙僧');

list1.add(数据);

//构建目录集合2

list ticket list 2=new ArrayList();

data=new Ticket();

数据。setticketid(' 100001 ');

数据。setsalenum(' 20 ');

数据。setbatchavailablenum(" 10 ");

list2.add(数据);

data=new Ticket();

数据。setticketid(' 100001 ');

数据。setsalenum(' 20 ');

数据。setbatchavailablenum(" 10 ");

list2.add(数据);

data=new Ticket();

数据。setticketid(' 100002 ');

数据。setsalenum(' 1000 ');

数据。setbatchavailablenum(' 600 ');

list2.add(数据);

data=new Ticket();

数据。setticketid(' 100003 ');

数据。setsalenum(' 600 ');

数据。setbatchavailablenum(' 100 ');

list2.add(数据);

data=new Ticket();

数据。setticketid(' 100004 ');

数据。setsalenum(' 800 ');

数据。setbatchavailablenum(' 300 ');

list2.add(数据);

//使用溪流流把列表一和列表2根据属性ticketId合并一个目录集合

ListTicket list=list1.stream().地图(m - {

list2.stream().过滤器(m2-对象。equals(m . getticketid(),m2.getTicketId()).forEach(m2- {

m。setsalenum(m2。getsalenum());

m。setbatchavailablenum(m2。getbatchavailablenum());

});

返回m;

}).收藏(收藏者。to list());

for(Ticket ticket:list){

系统。出去。println(票。' getticketid()',' ticket.getTicketName()',' ticket.getSaleNum()',' ticket。getbatchavailablenum());

}

退货单;

}

}

合并运行结果:

示例3:java8 合并两个 listT,集合个数前者小于后者,要后者

列表一中对象的属性:ticketId、ticketName

列表2中对象的属性:ticketId、batchId

最总集合中对象的属性:ticketId、ticketName、batchId

列表1:

ticketId:10001,ticketName:唐僧

ticketId:10002,ticketName:八戒

列表2:

ticketId:10001,batchId:1

ticketId:10001,batchId:2

ticketId:10002,batchId:1

ticketId:10002,batchId:2

ticketId:10003,batchId:2

想要的结果:list1合并到 list 2

ticketId:10001,ticketName:唐僧,batchId:1

ticketId:10001,ticketName:唐僧,batchId:2

ticketId:10002,ticketName:八戒,batchId:1

ticketId:10002,ticketName:八戒,batchId:2

ticketId:10003,ticketName:八戒,batchId:2

代码实现:

导入Java。util。ArrayList

导入Java。util。列表;

导入Java。util。对象;

导入Java。util。溪流。收藏家;

/**

* @作者qzz

*/

公共类列表测试2 {

公共静态void main(String[] args) {

合并列表();

}

/**

* @描述:合并两个列表地图,并将使用者辩证码相同的其它属性合并

* @Title: mergeList

* @param: @return

* @return: ListMapString,Object

* @次投掷

*/

公共静态ListTicket mergeList(){

list ticket list 1=new ArrayList();

车票数据=新车票();

数据。setticketid(' 100001 ');

data.setTicketName('唐僧');

list1.add(数据);

data=new Ticket();

数据。setticketid(' 100002 ');

data.setTicketName('八戒');

list1.add(数据);

list ticket list 2=new ArrayList();

data=new Ticket();

数据。setticketid(' 100001 ');

数据。setbatchid(' 1 ');

list2.add(数据);

data=new Ticket();

数据。setticketid(' 100001 ');

数据。setbatchid(' 2 ');

list2.add(数据);

data=new Ticket();

数据。setticketid(' 100002 ');

数据。setbatchid(' 1 ');

list2.add(数据);

data=new Ticket();

数据。setticketid(' 100002 ');

数据。setbatchid(' 2 ');

list2.add(数据);

data=new Ticket();

数据。setticketid(' 100002 ');

数据。setbatchid(' 3 ');

list2.add(数据);

//使用溪流流把列表一合并到列表2集合中,根据ticketId属性

ListTicket list=list2.stream().地图(m - {

list1.stream().过滤器(m2-对象。equals(m . getticketid(),m2.getTicketId()).forEach(m2- {

m。setticketid(m2。getticketid());

m。setticket名称(m2。getticket name());

});

返回m;

}).收藏(收藏者。to list());

for(Ticket ticket:list){

系统。出去。println(票。getticketid()',' ticket.getTicketName()',' ticket。getbatchid());

}

退货单;

}

}

合并运行结果:

示例4:java8 合并两个 listT,集合个数前者大于后者,要后者

列表一中对象的属性:ticketId、ticketName

列表2中对象的属性:ticketId、batchId

最总集合中对象的属性:ticketId、ticketName、batchId

列表1:

ticketId:10001,ticketName:唐僧

ticketId:10002,ticketName:八戒

列表2:

ticketId:10001,batchId:1

ticketId:10001,batchId:2

想要的结果:list1合并到 list 2,过滤掉batch不存在的数据

ticketId:10001,ticketName:唐僧,batchId:1

ticketId:10001,ticketName:唐僧,batchId:2

代码实现:

导入Java。util。ArrayList

导入Java。util。列表;

导入Java。util。对象;

导入Java。util。溪流。收藏家;

/**

* @作者qzz

*/

公共类列表3 {

公共静态void main(String[] args) {

合并列表();

}

/**

* @描述:合并两个列表地图,并将使用者辩证码相同的其它属性合并

* @Title: mergeList

* @param: @return

* @return: ListMapString,Object

* @次投掷

*/

公共静态ListTicket mergeList(){

list ticket list 1=new ArrayList();

车票数据=新车票();

数据。setticketid(' 100001 ');

data.setTicketName('唐僧');

list1.add(数据);

data=new Ticket();

数据。setticketid(' 100002 ');

data.setTicketName('八戒');

list1.add(数据);

list ticket list 2=new ArrayList();

data=new Ticket();

数据。setticketid(' 100001 ');

数据。setbatchid(' 1 ');

list2.add(数据);

data=new Ticket();

数据。setticketid(' 100001 ');

数据。setbatchid(' 2 ');

list2.add(数据);

//data=new Ticket();

//数据。setticketid(' 100002 ');

//数据。setbatchid(' 1 ');

//list2.add(数据);

//

//data=new Ticket();

//数据。setticketid(' 100002 ');

//数据。setbatchid(' 2 ');

//list2.add(数据);

//

//data=new Ticket();

//数据。setticketid(' 100002 ');

//数据。setbatchid(' 3 ');

//list2.add(数据);

//使用溪流流把列表一合并到列表2集合中,根据ticketId属性

ListTicket list=list2.stream().地图(m - {

list1.stream().过滤器(m2-对象。equals(m . getticketid(),m2.getTicketId()).forEach(m2- {

m。setticketid(m2。getticketid());

m。setticket名称(m2。getticket name());

});

返回m;

}).收藏(收藏者。to list());

for(Ticket ticket:list){

系统。出去。println(票。getticketid()',' ticket.getTicketName()',' ticket。getbatchid());

}

退货单;

}

}

合并运行结果:

到此这篇关于jdk8使用溪流实现两个目录集合合并成一个(对象属性的合并)的文章就介绍到这了,更多相关jdk8流列表集合合并内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • ubuntu18.04安装jdk8,ubuntu中安装jdk
  • ubuntu18.04安装jdk8,ubuntu中安装jdk,Ubuntu 安装 JDK8 的两种方法(总结)
  • JDK1.8安装教程,安装配置jdk1.8
  • JDK1.8安装教程,安装配置jdk1.8,2020JDK1.8安装教程详解(一次就可安装成功)
  • ,,IntelliJ IDEA之配置JDK的4种方式(小结)
  • java代理模式详解,java代理模式的典型例子,java代理模式(jdk proxy)
  • java中spi有什么作用,jdk的spi机制
  • java中spi有什么作用,jdk的spi机制,一文搞懂Java的SPI机制(推荐)
  • ,,详解JDK自带javap命令反编译class文件和Jad反编译class文件(推荐使用jad)
  • ,,JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版整理
  • ,,JAVA JDK8 List分组的实现和用法
  • idea配置tomcat和jdk,idea配置本地gradle
  • 简单叙述一下jdk环境变量的配置,jdk环境变量配置是干什么的
  • 建立Java开发环境,安装JDK,一般需要设置环境变量,在安装完JDK后,需要在环境变量中配置
  • centos7安装jdk,centos如何安装java
  • 留言与评论(共有 条评论)
       
    验证码: