Java8 从列表中删除密钥<Map<String, Object>>

Java8 remove keys from List<Map<String, Object>>

我有一个 List>,我需要删除嵌套键 = "age"(如果存在)和 return 地图列表。我怎样才能用 streams() 优雅地做到这一点?

Map<String, Object> map1 = new HashMap<String, Object>();
map1.put("Name", "Michael");
map1.put("Age", 43);
map1.put("City", "Paris");

Map<String, Object> map2 = new HashMap<String, Object>();
map2.put("Name", "Tanja");
map2.put("Age", 23);
map2.put("City", "Berlin");

Map<String, Object> map3 = new HashMap<String, Object>();
map3.put("Name", "Diego");
map3.put("Age", 35);
map3.put("City", "Madrid");

List<Map<String, Object>> list = new ArrayList<>();
list.add(map1);
list.add(map2);
list.add(map3);

示例:

[
     {Name="Michael", age=43, city="Paris"},
     {Name="Tanja", age=23, city="Berlin"},
     {Name="Diego", age=35, city="Madrid"}
]

至:

[
     {Name="Michael", city="Paris"},
     {Name="Tanja", city="Berlin"},
     {Name="Diego", city="Madrid"}
]

感谢您的帮助。

你可以简单地使用这个:

 list.forEach(stringObjectMap -> {
     stringObjectMap.remove("Age");
 });

由于地图对象是一个引用,您可以简单地从地图中删除一个键,而无需将其复制到另一个地图对象中。

试试这样的东西:

List<Map<String, Object>> result = list.stream()
    .filter(x -> x.entrySet().removeIf(y -> y.getKey().equals("Age")))
    .collect(Collectors.toList());