java - 他们是我的要求的任何替代方法而不是迭代器
问题描述
我有一张地图HashMap<sId, List<Bannas>>
,其中sId
列表的许多 Id 都相似,而且我也有一个方法 getListbySId(在 sId 中)。通过使用这种方法,我可以获得基于 sId 的具有相似值的值列表。现在我必须从基于 sId 的值列表中删除一个值,然后可以通过迭代过程来比较值列表的 id。如果匹配,我将删除它。除了这种方法,任何人都可以说另一种方法来删除值或获取值而不改变要求。我无法提供代码请帮助我。
解决方案
如果要从List<Bannas>
匹配对象的某些id
字段Bannas
(可能是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))
);
}
推荐阅读
- java - 如何获得双倍的最小显着差异?
- python - 尝试连接到数据库时出现 Pyodbc 错误
- r - 将数据分配给 ShinyApp 数据表中的新列时出错:替换有 0 行
- html - 即使我使用边框框,为什么我的内联溢出?
- eclipse - Eclipse Git 提交签名 - “无法解析密钥文件”
- mysql - 使用 UNION 的更好方法
- excel - 如何将粘贴 Excel 图表作为图片复制到电子邮件正文中?运行时错误 1004:Microsoft Excel 无法粘贴数据
- visual-studio - 是否可以在 Visual Studio 2019 中使用仅选项卡智能完成作为所有文件的默认设置?
- linux - 截至 2021 年 5.4+ 主线 Linux 内核中的 bpfilter 状态
- github - 尝试 POST (webhook) Github 更改为 Slack 频道