欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java8处理List的双层循环问题

程序员文章站 2022-05-08 09:14:17
java处理list的双层循环程序员经常遇到,一般都是当两个list某个值满足某条件时候,进行相应的处理;1.list和map之间的相互转换/** * 两个list对象当id相同的时候(注意是两个对象...

java处理list的双层循环程序员经常遇到,一般都是当两个list某个值满足某条件时候,进行相应的处理;

1.list和map之间的相互转换

/**
 * 两个list对象当id相同的时候(注意是两个对象,而非两个集合)
 * @param husbands
 * @param wives
 */
private static void test8(list<husband> husbands, list<wife> wives) {
  list<family> families = lists.newarraylist();
  //将wives转换为map,这里的key一定要唯一,即为familyid
  map<integer, wife> wifemap = wives.stream().collect(tomap(w -> w.getfamilyid(), w -> w));
  families = husbands.stream().map(husband -> {
    family family = new family();
    wife wife = wifemap.get(husband.getfamilyid());
    family.setfamilyid(wife.getfamilyid());
    family.sethusbandname(husband.gethusbandname());
    family.setwifename(husband.getwifename());
    return family;
  }).collect(collectors.tolist());
}

2.java8中的

groupingby

counting

maptodouble

filter

sum等函数方法的使用

//苹果颜色对应的数量
map<string, long> collect = applevos.stream().collect(groupingby(applevo::getcolor, counting()));
// 过滤掉颜色为黑色的苹果,并汇总好苹果的总金额
double sum = applevos.stream().filter(i -> "black".equals(i.getcolor())).maptodouble(applevo::getprice).sum();

补充知识:java8新技术:数据流式处理之两个list集合多对多遍历关联

自用测试方法

Java8处理List的双层循环问题

说明一下:list1和list2两个集合进行匹配,将list2中的对应的值取出,使list1中的每条数据都有对应的list2中的name值,list1为主集合,数据需全部展示;

注意:若list1的数量多于list2,并且数据匹配不上,则多出来的会在list3中为null;

以上这篇java8处理list的双层循环问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

相关标签: Java8 List 循环