比较LinkedList.contains()中的对象

Eri*_*ric 9 java equality contains linked-list

我希望能够让LinkedList.contains()为自定义比较器返回true.

假设我有1个LinkedList和2个对象

LinkedList<MyObject> myList = new LinkedList<MyObject>();

MyObject a = new MyObject("HELLO");
MyObject b = new MyObject("HELLO");
Run Code Online (Sandbox Code Playgroud)

技术上,两个对象在比较方面是相同的(MyObject实现Comparable)

(a == b)== true

但是,当我执行以下操作时,myList不会为myList.contains返回true(b)

myList.add(a)
myList.contains(b) // == false
Run Code Online (Sandbox Code Playgroud)

我认为它因为包含将检查对象引用,并看到a和b是2个不同的对象.我有什么方法可以做到这一点所以我不必扩展LinkedList来比较这些对象?

Bre*_*iel 26

LinkedList使用equals方法,而不是Comparable.compareTo.您应该在MyObject中重写equals(和hashCode)来解决问题.

  • 如果我不能那样做怎么办?是否有一个Set来获得自定义比较器? (2认同)