java – 删除具有重复字段值的entrySet对象
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 删除具有重复字段值的entrySet对象,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含960字,纯文字阅读大概需要2分钟。
内容图文
![java – 删除具有重复字段值的entrySet对象](/upload/InfoBanner/zyjiaocheng/774/a76065abc1d148518c56a54a7927c530.jpg)
我有一个Hashmap< String,List< A>>
目前我从我的条目列表中筛选出具有A.result null的所有对象
map.entrySet().stream()
.forEach(aList -> aList.getValue().removeIf(a -> a.result == null));
我还需要删除具有重复结果字段值的所有A对象
所以,如果我有A1.result = 1和A2.result = 1我会得到一个.
编辑:移动临时解决方案作为答案,因为还没有找到更好的方法.
解决方法:
正如Hemant在their comment中所述,在A中覆盖Object#equals和Object#hashCode是一个明智的想法,因此可以通过结果字段比较两个对象:
@Override
public boolean equals(Object o) {
if (!(o instanceof A)) {
return false;
}
return Objects.equals(result, ((A) o).result);
}
@Override
public int hashCode() {
return Objects.hash(result);
}
现在,您可以重新选择Map到Map< String,Set< A>>,这可以通过Java 10中的以下内容完成:
map.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getKey, e -> Set.copyOf(e.getValue()))));
它与Java 8略有不同:
map.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getKey, e -> new HashSet<>(e.getValue())))
内容总结
以上是互联网集市为您收集整理的java – 删除具有重复字段值的entrySet对象全部内容,希望文章能够帮你解决java – 删除具有重复字段值的entrySet对象所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。