我有一个映射HashMap<sId, List<Bannas>>
,其中sId
对于列表的许多Id是相似的,我还有一个方法getListbySId(在sId中)。通过使用这种方法,我可以获得一个基于sId的具有相似值的值列表。现在我必须从基于sId的值列表中删除一个值,然后通过迭代过程可以比较值列表的id。如果匹配,我会删除它。代替这种方法,任何人都可以说一种替代方法来删除值或在不改变要求的情况下获得值。我无法提供代码plz帮助我。
如果您想从List<Bannas>
中删除与Bannas
对象的某个id
字段匹配的一些值(可能是sId
或其他id),可以使用Collection::removeIf
方法:
//
public static void removeValuesById(HashMap<String, List<Bannas>> map, String sId, String anotherId) {
map.getOrDefault(sId, Collections.emptyList())
.removeIf(banna -> banna.getId().equals(anotherId));
}
更新
另一个不依赖于Collections.emptyList
实现的解决方案应处理密钥sId
不在映射中的情况:
public static void removeValuesById(HashMap<String, List<Bannas>> map, String sId, String anotherId) {
Optional.ofNullable(map.get(sId))
.ifPresent(list ->
list.removeIf(banna -> banna.getId().equals(anotherId))
);
}