是他们的任何替代方法,而不是迭代器,以满足我的需求



我有一个映射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))
);      
}

相关内容

  • 没有找到相关文章

最新更新