Java: список вставки более одного объекта с тем же HASH - PullRequest
0 голосов
/ 26 сентября 2011

У меня проблемы с этим:

Мне нужно переопределить 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), сбивает меня с толку, поскольку по умолчанию выполняется редактирование для дублированного элемента FIRST ( и в этом есть какой-то смысл ...).

Ответы [ 2 ]

1 голос
/ 27 сентября 2011

Я думаю, что в списке не имеет значения, является ли он дубликатом или нет.

Я думаю, это зависит от того, что мы делаем (относительно того, где они окажутся в списке) -

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

Кроме того, что для списка, это порядок, в котором мы добавляем объект в список.

Потому что если у нас есть список вроде

List list = ArrayList();

Чем он неНеважно, какой тип объекта мы добавляем в него, поэтому не имеет значения, определены ли у нас hashCode и equals или нет.

0 голосов
/ 27 сентября 2011

нет, это не нормально.

Насколько я знаю, ни одна реализация java.util.List не использует метод equals () или hasCode ()

.отсканированный код, пожалуйста?

Маби, ты смотрел первый А, который ты предварительно вставил?

A // prevously inserted 
B 
C 
A // the new duplicat
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...