Java集合依赖于
equals和
hashCode方法(
HashMap,,
HashSets和其他方法使用后者)。
如果你希望能够使用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,将
ItemWrappers
存储在Java集合中,并使用所需的方法(
removeAll/
retainAll)。然后遍历结果集合,并
Item通过调用each
ItemWrapper的
getItem()方法来检索。
您的另一个选择是subclass
ArrayList,但这似乎是一个更复杂的解决方案。
还有一种选择是不将Java集合用于删除/保留逻辑,而是自己实现它们。



