List<Map<String, Object>> personsOneList = new ArrayList<>();
Map<String, Object> oneProperties = new HashMap<>();
oneProperties.put("id", "001");
oneProperties.put("name", "jack1");
oneProperties.put("age", "13");
personsOneList.add(oneProperties);
Map<String, Object> twoProperties = new HashMap<>();
twoProperties.put("id", "002");
twoProperties.put("name", "jack2");
twoProperties.put("age", "14");
personsOneList.add(twoProperties);
Map<String, Object> threeProperties = new HashMap<>();
threeProperties.put("id", "003");
threeProperties.put("name", "jack3");
threeProperties.put("age", "15");
personsOneList.add(threeProperties);
List<Map<String, Object>> personsOtherList = new ArrayList<>();
Map<String, Object> sevenProperties = new HashMap<>();
sevenProperties.put("id", "009");
sevenProperties.put("name", "jack9");
personsOtherList.add(sevenProperties);
Map<String, Object> fourProperties = new HashMap<>();
fourProperties.put("id", "001");
fourProperties.put("name", "jack1");
personsOtherList.add(fourProperties);
Map<String, Object> fiveProperties = new HashMap<>();
fiveProperties.put("id", "002");
fiveProperties.put("name", "jack2");
personsOtherList.add(fiveProperties);
Map<String, Object> sixProperties = new HashMap<>();
sixProperties.put("id", "003");
sixProperties.put("name", "jack3");
personsOtherList.add(sixProperties);
for (int i = personsOneList.size() - 1; i >= 0; i--) {
for (int j = personsOtherList.size() - 1; j >= 0; j--) {
Map<String, Object> map1 = personsOneList.get(i);
int size = 0;
Map<String, Object> map2 = personsOtherList.get(j);
Set<Map.Entry<String, Object>> entries = map2.entrySet();
for (Map.Entry<String, Object> entry : entries) {
if (map1.containsKey(entry.getKey()) && map1.containsValue(entry.getValue())) {
size++;
}
}
if (size == map2.keySet().size()) {
personsOtherList.remove(j);
}
}
}
System.out.println(personsOtherList.toString());
personsOneList.addAll(personsOtherList);
System.out.println(personsOneList);
}