首先先来一个案例简单模拟一下:
Listwifes = new ArrayList();
Listhusbands= new ArrayList();
for(int i=0;i<8000;i++){
wifes.add(new Wife(i, i+"的妻子", "000"+i));
}
for(int i=0;i<8000;i++){
husbands.add(new Husband(i, "我是"+i, "000"+i));
}
//现在需要让妻子和丈夫进行配对组成一个家庭,按照familyId进行配对
在1.8之前你会这么写:
for(int i=0;i
如果按照jdk1.8的lamada表达式进行匹配的话。这个测试结果是ms级别的
// 将list转为Map,这里key一定要为唯一值,map(familyId,wife对象)
MapwifeMap = wife.stream().collect(
Collectors.toMap(w -> w.getFamilyId(),
w -> w));
// 匹配家庭
families = husband.stream().map(h -> {
//从wifeMap里面根据husband的familyId去匹配。匹配上后组装成家庭对象然后放入集合。最后生成新的家庭集合
return toFamily(wifeMap.get(h.getFamilyId()), h);