【发布时间】:2017-02-13 16:50:54
【问题描述】:
我目前有一个List 的对象。通过以下方式删除对象:
if (mProducts.contains(orderProduct)) {
mProducts.remove(orderProduct);
.
.
但是List 的 javadocs 声明
从这个 {@code List} 中删除指定对象的第一个匹配项。
我需要从列表中删除 given 对象,而不仅仅是第一个对象。这里的正确方法是什么?我可以提供自己的 List.remove 实现或使用替代数据结构吗?
谢谢, 水獭
【问题讨论】:
-
"第一次出现指定的对象" 如果你指定一个特定的对象并且它在列表中找到两个相同的对象,它将只删除第一个 - 而不是列表中的第一个项目。你能提供一个不符合你期望的例子吗?
-
这两个对象有什么不同吗?为什么你需要专门为 2 保留一个?
-
无需深入实施,这些对象就是 OrderProducts。我发现当 OrderProducts 是同一个产品时,它们被视为相等,但我需要检查其他属性(自定义列表)以确定相等性。
-
为此,您需要覆盖 OrderProducts 类的 equals() 和 hashcode() 方法 - 这些方法根据您的定义确定对象何时“相同”。
标签: java android list data-structures