经过数小时的研究,我找不到问题的解决方案。我有一个Map<String, List<User>>,我想根据列表中的某些值删除地图的某些项目。
我必须关注用户类
public class User {
public String firstName,
public Integer age
public boolean is50() {
return this.age.equals(50);
}
}
我有一个这样的地图:
Map<String, List<User> myMap = new HashMap<>();
myMap.put("A", new ArrayList<>());
myMap.get("A").add(new User("John", 50));
myMap.get("A").add(new User("Bob", 30));
myMap.put("B", new ArrayList<>());
myMap.get("B").add(new User("Sam", 25));
myMap.get("B").add(new User("Sarah", 56));
myMap.put("C", new ArrayList<>());
myMap.get("C").add(new User("Gill", 15));
myMap.get("C").add(new User("Jim", 20));
现在,如果列表中至少有一个用户年龄为 50 岁,我想删除 Map 的条目。另外,我想使用 Java 8 功能来实现这一点。
我发现有一个removeIf函数,但我不能让它与列表一起使用。
我试过这样的事情:
Map<String, List<User> filteredMap = myMap
.enrySet()
.removeIf(e -> e.getValue()
.stream()
.filter(user -> user::is50)
.collect(Collectors.toList())
当然那是行不通的:(
例外的输出是一个 filteredMap,所有用户只有 B 和 C 键(必须删除 A 键,因为 John 已经 50 岁了)
谢谢你的帮助,希望它是清楚的;)
红糖糍粑
德玛西亚99
汪汪一只猫
明月笑刀无情
相关分类