Java8处理List的双层循环问题
程序员文章站
2022-11-15 14:49:47
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集合多对多遍历关联
自用测试方法
说明一下:list1和list2两个集合进行匹配,将list2中的对应的值取出,使list1中的每条数据都有对应的list2中的name值,list1为主集合,数据需全部展示;
注意:若list1的数量多于list2,并且数据匹配不上,则多出来的会在list3中为null;
以上这篇java8处理list的双层循环问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。