栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何对两个对象使用Collections方法(removeAll()和retainAll())。(对象是父子关系)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何对两个对象使用Collections方法(removeAll()和retainAll())。(对象是父子关系)

Java集合依赖于

equals
hashCode
方法(
HashMap
,,
HashSet
s和其他方法使用后者)。

如果你希望能够使用Java集合的数据结构的能力(如

removeAll
retainAll
等),你需要用正确的实现提供对象
equals
hashCode

如果您不能修改

Item
该类,则可以使用自己的实现编写包装类
equals

public class ItemWrapper {    private final Item item;    public ItemWrapper(Item item) {        this.item = item;    }    public Item getItem() {        return item;    }    @Override    public boolean equals(Object obj) {        return obj instanceof ItemWrapper && item.getId().equals(((ItemWrapper) obj).item.getId());    }    @Override    public int hashCode() {        return item.getId().hashCode();    }}

ItemWrapper
为每个原始文件创建一个新文件
Item
,将
ItemWrapper
s
存储在Java集合中,并使用所需的方法(
removeAll
/
retainAll
)。然后遍历结果集合,并
Item
通过调用each
ItemWrapper
getItem()
方法来检索。

您的另一个选择是subclass

ArrayList
,但这似乎是一个更复杂的解决方案。

还有一种选择是不将Java集合用于删除/保留逻辑,而是自己实现它们。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/498396.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号