2011-09-26 49 views
0
我有一点麻烦

多个对象的这一个列表中插入:的Java:用相同的哈希

我需要重写的hashCode()和equals(),导致一些对象是“等于”。这是预期的行为,但我有集合的附带问题(预期...):

我使用ArrayList,并插入一个重复的对象在预定义的索引不符合插入方法。而是插入到第一个重复存在元素的前一个位置。

Let's say i have 
A 
B 
C 

而且我插入索引> 0的重复...

it will be inserted at index 0. 
->A 
A 
B 
C 

这是正常的行为呢?

谢谢。编号:对象被插入到正确的位置。我使用的TableViewer(org.eclipse.jface.viewers.TableViewer)让我感到困惑,因为它默认编辑到第一个重复元素(并且这是有道理的......)。

+3

你确定你不会混淆新插入的对象与它以前插入的重复吗?你怎么区分这两者。 – Perception

+0

我只是试过了,它绝对可以正常工作。其他一切都将是一场真正的灾难:-)也许你可以发布代码? – home

+0

是的。你是对的。只是做了一个完整的调试。对象被插入到正确的位置。我使用的TableViewer(org.eclipse.jface.viewers.TableViewer)让我感到困惑,因为它默认编辑到第一个重复元素(这是有道理的......)。谢谢。 – marcolopes

回答

1

我认为在列表中无论重复与否都无关紧要。

我认为这取决于我们是否正在做的(因为在那里他们将在列表结束) -

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

除此之外,对于一个列表,这是我们在其中添加对象的顺序名单。

因为如果我们有像列表

List list = ArrayList(); 

比没关系,我们加入到它是什么类型的对象,所以它没有任何区别,我们是否有足够的hashCode和定义equals与否。

0

不,这是不正常的。

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

你能提供一些代码狙击吗?

Maby你在看第一个你已经预先插入的?

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