2个List<Map<String,String>>,对比2个list的不同的字段
时间: 2023-11-18 17:14:11 浏览: 111
可以使用Java 8的Lambda表达式和Stream API来比较两个List<Map<String, String>>的不同字段。以下是一个示例代码:
```java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class CompareTwoListOfMaps {
public static void main(String[] args) {
// 创建第一个List<Map<String,String>>
List<Map<String, String>> list1 = new ArrayList<>();
Map<String, String> map1 = new HashMap<>();
map1.put("id", "1");
map1.put("name", "John");
map1.put("age", "30");
list1.add(map1);
Map<String, String> map2 = new HashMap<>();
map2.put("id", "2");
map2.put("name", "Mary");
map2.put("age", "25");
list1.add(map2);
// 创建第二个List<Map<String,String>>
List<Map<String, String>> list2 = new ArrayList<>();
Map<String, String> map3 = new HashMap<>();
map3.put("id", "1");
map3.put("name", "John");
map3.put("age", "35");
list2.add(map3);
Map<String, String> map4 = new HashMap<>();
map4.put("id", "2");
map4.put("name", "Mary");
map4.put("age", "25");
list2.add(map4);
// 比较两个List<Map<String,String>>的不同字段
list1.stream()
.filter(m1 -> list2.stream()
.filter(m2 -> m1.get("id").equals(m2.get("id")))
.anyMatch(m2 -> !m1.get("age").equals(m2.get("age"))))
.forEach(System.out::println);
}
}
```
在上面的示例中,我们创建了两个List<Map<String, String>>:list1和list2。然后,我们使用Lambda表达式和Stream API来比较两个列表的不同字段。在这里,我们使用了filter()和anyMatch()方法来筛选出不同的字段。最后,我们使用forEach()方法来打印出不同的记录。
需要注意的是,这里只比较了id和age两个字段,你可以根据需要添加或删除其他字段进行比较。
阅读全文