2011-09-26 3 views
0
나는 약간의 문제가 있어요

더 이상 객체 목록 삽입 :자바 :이 하나와 같은 해시

나는 "일부 개체가되는 결과로 hashCode()와 같음()를 재정의해야 같은". 그건 의도 된 동작이지만 컬렉션에 부수적 인 문제가 있습니다. (예상했습니다 ...) :

ArrayList를 사용하여 작업하고 미리 정의 된 인덱스에 중복 오브젝트를 삽입하는 것은 삽입 메소드에서 적용되지 않습니다. 대신 기존 중복 된 첫 번째 요소의 PREVIOUS 위치에 삽입됩니다. 이 정상적인 동작은

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

Let's say i have 
A 
B 
C 

그리고 내가 인덱스> 0에서의 중복을 삽입 ...인가?

감사합니다.

편집 : 개체가 올바른 위치에 삽입됩니다. TableViewer (org.eclipse.jface.viewers.TableViewer)를 사용하면 혼란 스럽습니다. 편집 된 내용이 FIRST 복제 된 요소로 기본 설정되어 있기 때문입니다.

+3

새로 삽입 한 개체를 이전에 삽입 한 복제물과 혼동하지 않으시겠습니까? 두 분을 어떻게 구별합니까? – Perception

+0

방금 ​​해봤으므로 분명히 작동합니다. 그 밖의 모든 것이 진짜 재앙이 될 것입니다 :-) 코드를 게시 할 수 있습니까? – home

+0

예. 네가 옳아. 그냥 전체 디버그했다. 개체가 올바른 위치에 삽입되었습니다. TableViewer는 (org.eclipse.jface.viewers.TableViewer) 혼란 스럽습니다. 왜냐하면 편집 된 내용이 FIRST 복제 된 요소로 기본 설정되어 있기 때문입니다. 감사. – marcolopes

답변

1

목록에 중복인지 여부는 중요하지 않습니다.

나는 우리가 (같은 그들이 목록에 종료됩니다 곳으로) 수행 여부 따라 생각 - 목록에 대한보다 다른

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

, 우리는에 개체를 추가하는 순서입니다 명부.

때문에 우리가 그것으로 추가 개체의 유형을 중요하지 않습니다, 그래서 우리는 hashCode 및 정의 equals 여부가 있는지 여부는 어떤 차이가되지 않습니다보다 우리는

List list = ArrayList(); 

같은 목록이있는 경우.

0

아니요. 정상이 아닙니다.

는 지금까지 내가 아는 한, java.util.List를 전혀 구현은 등호() 또는 hasCode() 메소드

당신이 몇 가지 코드가하십시오 스닙 제공 할 수 있습니다를 사용하지?

Maby 당신은 이전에 삽입 한 첫 번째 A를보고 있었습니까?

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