Java:列出具有相同HASH的多个对象的插入

时间:2011-09-26 19:45:11

标签: java list collections hash

我遇到这个问题:

我需要覆盖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重复元素(这有点道理......)。

2 个答案:

答案 0 :(得分:1)

我认为在列表中,它是否重复并不重要。

我认为这取决于我们是否正在做(关于它们最终会在列表中的位置) -

list.add(obj);
//or
list.add(index, obj);
//or
list.set(index, obj);

除了List之外,它是我们将对象添加到列表的顺序。

因为我们有像

这样的清单
List list = ArrayList();

与我们添加到哪种类型的对象并不重要,因此我们是否定义了hashCodeequals并没有任何区别。

答案 1 :(得分:0)

不,这不正常。

据我所知,没有java.util.List的实现使用equals()或hasCode()方法

你可以提供一些代码狙击吗?

Maby你在看你最初插入的第一个A?

A // prevously inserted 
B 
C 
A // the new duplicat