Java 替代列表数据结构

Java 替代列表数据结构,java,android,list,data-structures,Java,Android,List,Data Structures,我目前有一个对象的列表。通过以下方式移除对象: if (mProducts.contains(orderProduct)) { mProducts.remove(orderProduct); . . 但是,列表的javadocs 从此{@code List}中删除指定对象的第一个匹配项 我需要从列表中删除给定的对象,而不仅仅是第一个对象。这里的正确方法是什么?我是否可以提供自己的List.remove实现或使用其他数据结构 谢谢, Otterman在Java中,List使用

我目前有一个对象的
列表。通过以下方式移除对象:

if (mProducts.contains(orderProduct)) {
   mProducts.remove(orderProduct);
   .
   . 
但是,
列表的javadocs

从此{@code List}中删除指定对象的第一个匹配项

我需要从列表中删除给定的对象,而不仅仅是第一个对象。这里的正确方法是什么?我是否可以提供自己的List.remove实现或使用其他数据结构

谢谢, Otterman

在Java中,List使用equals()作为其contains和remove(Object o)方法,如前所述

在其中一个答案注释中,还指出Java使用引用比较作为默认值


也许您可以为您的产品重写equals()方法以获得您想要的结果

“指定对象的第一次出现”如果指定了一个特定对象,并且在列表中找到了其中两个相同的对象,则只会删除第一个对象,而不会删除列表中的第一项。你能提供一个没有按你期望的方式工作的例子吗?这两个对象有什么不同吗?为什么您需要为2保留一个特定的对象?在不深入实现的情况下,这些对象是OrderProducts。我发现当OrderProducts是相同的产品时,它们被视为相等的,但我需要检查其他属性(自定义列表)以确定相等性。为此,您需要覆盖OrderProducts类的equals()和hashcode()方法-这些方法确定对象何时“相同”根据你的定义。谢谢!事实证明,在重写的equals()中添加额外的逻辑正是我所需要的;我对这个问题想得不对。