我遇到这个问题:
我需要覆盖hashCode()和equals(),导致某些对象“相等”。这是预期的行为,但我有集合的附带问题(预期......):
我使用ArrayList,并且插入方法不支持在预定义索引处插入重复对象。而是将其插入FIRST复制现有元素的PREVIOUS位置。
Let's say i have
A
B
C
我在索引> 0 ...
中插入A的副本it will be inserted at index 0.
->A
A
B
C
这是正常行为吗?
感谢。
编辑:对象插入到正确的位置。我正在使用的TableViewer(org.eclipse.jface.viewers.TableViewer)让我很困惑,因为它默认编辑为FIRST重复元素(这有点道理......)。
答案 0 :(得分:1)
我认为在列表中,它是否重复并不重要。
我认为这取决于我们是否正在做(关于它们最终会在列表中的位置) -
list.add(obj);
//or
list.add(index, obj);
//or
list.set(index, obj);
除了List之外,它是我们将对象添加到列表的顺序。
因为我们有像
这样的清单List list = ArrayList();
与我们添加到哪种类型的对象并不重要,因此我们是否定义了hashCode
和equals
并没有任何区别。
答案 1 :(得分:0)
不,这不正常。
据我所知,没有java.util.List的实现使用equals()或hasCode()方法
你可以提供一些代码狙击吗?
Maby你在看你最初插入的第一个A?
A // prevously inserted
B
C
A // the new duplicat