public static void main(String[] args) {
//准备数据
Map<String,String> map1 = new HashMap<String,String>(){
{
put("name","张三");
put("sex","男");
put("age","20");
}
};
Map<String,String> map2 = new HashMap<String,String>(){
{
put("name","李四");
put("sex","男");
put("age","20");
}
};
Map<String,String> map3 = new HashMap<String,String>(){
{
put("name","张三");
put("sex","女");
put("age","20");
}
};
List<Map<String,String>> list = new ArrayList<Map<String,String>>(){
{
add(map1);
add(map2);
add(map3);
}
};
Map<String,String> map11 = new HashMap<String,String>(){
{
put("name","张三");
put("sex","男");
put("mobile","18511112221");
}
};
Map<String,String> map22 = new HashMap<String,String>(){
{
put("name","李四");
put("sex","男");
put("mobile","18511112222");
}
};
Map<String,String> map33 = new HashMap<String,String>(){
{
put("name","张三");
put("sex","女");
put("mobile","18511112223");
}
};
List<Map<String,String>> list1 = new ArrayList<Map<String,String>>(){
{
add(map11);
add(map22);
add(map33);
}
};
//准备数据结束
//匹配出所有个人信息列表
//传统的双层for循环
List<Map<String,String>> result = new ArrayList<>();
Map<String,String> resultMap = null;
for (Map<String,String> map : list){
for (Map<String,String> mapStr : list1){
if (mapStr.get("name").equals(map.get("name")) && mapStr.get("sex").equals(map.get("sex"))){
resultMap = new HashMap<>();
resultMap.putAll(mapStr);
resultMap.putAll(map);
result.add(resultMap);
}
}
}
System.out.println(result);
//使用lamda表达式的简洁写法
list.stream().forEach(map0 -> {
map0.put("mobile",list1.stream().filter(t->t.get("name").equals(map0.get("name"))).filter(t->t.get("sex").equals(map0.get("sex"))).findFirst().get().get("mobile"));
});
System.out.println(list);
}
运行结果如下:
image.png