当前位置: 移动技术网 > IT编程>开发语言>Java > Java8处理List的双层循环问题

Java8处理List的双层循环问题

2020年08月19日  | 移动技术网IT编程  | 我要评论
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的双层循环问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持移动技术网。

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网