Java处理List的双层循环程序员经常遇到,一般都是当两个List某个值满足某条件时候,进行相应的处理;
1.list和map之间的相互转换
/**
* 两个List对象当id相同的时候(注意是两个对象,而非两个集合)
* @param husbands
* @param wives
*/
private static void test8(List husbands, List wives) {
List families = Lists.newArrayList();
//将wives转换为map,这里的key一定要唯一,即为familyId
Map 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