2009-11-18 3 views
-1

자바의 해시 테이블에 여러 개의 arraylist 객체를 저장하는 방법 & 어떻게 되 찾을 수 있습니까?자바의 해시 테이블에 Arraylist 객체 추가하기

+0

같은 키에 대해 여러 개의 ArrayLists를 사용하고 싶습니까? 또는 각 ArrayList 자신의 키를 얻을 (Murali의 답변 에서처럼)? – Thilo

+0

-1 질문이 모호하고 제출자가 Map 또는 Hashtable 설명서를 살펴 보지 못하는 것 같습니다. –

답변

2

하지 마십시오. Hashtable 대신 HashMap을 사용하십시오. 동기화되지 않았습니다.

Map<String, ArrayList<SomeObject>> myMap = new HashMap<String, ArrayList<SomeObject>>(); 
ArrayList<SomeObject> list = new ArrayList<SomeObject>(); 
list.add(someObjectInstance1); 
list.add(someObjectInstance2); 
myMap.put("key1", list); // stores list containing instances #1 and #2 under key "key1" 
ArrayList<SomeObject> list2 = new ArrayList<SomeObject>(); 
list2.add(someObjectInstance3); 
myMap.put("key2", list2); // stores list2 containing instance #3 under key "key2" 

SomeObject obj1 = myMap.get("key1").get(0); // returns instance #1 
SomeObject obj2 = myMap.get("key1").get(1); // returns instance #2 
SomeObject obj3 = myMap.get("key2").get(0); // returns instance #3 

말했다 모든, 당신은 Google Collections 대신에서 Multimap 사용을 고려할 수 있습니다

Multimap<String, ArrayList<SomeObject>> myMap = ArrayListMultimaps.create(); 
myMap.put("key1", someObjectInstance1); 
myMap.put("key1", someObjectInstance2); 
myMap.put("key2", someObjectInstance3); 

SomeObject obj1 = myMap.get("key1").get(0); // returns instance #1 
SomeObject obj2 = myMap.get("key1").get(1); // returns instance #2 
SomeObject obj3 = myMap.get("key2").get(0); // returns instance #2 

당신은이 방법이 얼마나 더 간단하게 볼 수 있습니다.

+1

위의 코드는 다중 arraylist 객체를 해시 테이블에 추가하지 않습니다.

+0

위 코드를 보면 맵에 2 번째 (3 번째, N 번째)리스트를 추가하는 것이 꽤 분명 할 것이라고 생각합니다. 내가 틀렸어. 두 개의 목록을 보여주기 위해 업데이트되었습니다. – ChssPly76

+0

나는 내 downvote를 되돌 렸고, 기분이 나아 졌으면 좋겠다. –

-1

각 Linklist의 해시 코드를 키로 사용하십시오. 게시물 중 하나에서 언급 된 FOR 값을 키로 사용하는 것은 좋은 생각이 아닙니다. 다른 곳에서 새 목록을 추가해야하는 경우 어떻게해야합니까? 다음으로 큰 키를 찾으려면 전체지도를 탐색해야합니다.

+1

링크 된 목록의 해시 코드를 해시 키로 사용하는 것은 끔찍한 생각입니다. 무엇보다도 응용 프로그램에는 아무런 의미가 없습니다. hashtable (예를 들어 목록과 대조적으로)에 물건을 넣는 유일한 이유는 키를 사용하여이를 찾을 수 있기 때문입니다. 둘째, 많은 충돌이 있습니다. 빈 목록 세 개를 넣으면 서로 무시합니다. 셋째, 변경할 수있는 해시 키를 사용해서는 안되며 목록 내용이 변경되면 목록의 해시 코드가 변경됩니다. – Thilo

+0

Thilo, 대답은 아주 좋습니다. 내 실수는 Hashcode가 List가 저장되어있는 Unique 메모리의 주소와 같다고 가정했습니다. – Geek

관련 문제