2008-11-05 3 views
8

Java에서 MultiMap을 정렬해야하는 이유는 무엇입니까?Java에서 MultiMap <k,v>을 어떻게 분류합니까?

+1

나는 다시 열어이 질문을 제안한다 – mdec

+0

나는 또한 그것을 제안한다. –

+0

"Java에서 MultiMap 을 어떻게 정렬합니까?"에 대해 진짜가 아닌 것은 무엇입니까? 나는 mdec과 Steve와 붙어있다. +1 재개! – Burkhard

답변

1

org.apache.commons.collections.MultiMap에 대해 이야기한다고 가정하면 다음을 할 수 없습니다. List이 아닌 Collection을 리턴하기 때문에 주문 개념을 지원하지 않습니다.

org.apache.commons.collections.MultiHashMap에 대해 이야기하고 있다면 키를 반복하고 ArrayList을 반품하고 Collections.sort()을 사용하여 정렬하면됩니다.

that implementation though을 사용한다고 가정합니다.

정렬 목록을 지원하는 자신의 MultiMap을 쉽게 구현할 수있는 방법은 없습니다. HashMap<K, Collection<V>>처럼 쉬울 수도 있습니다. 멀티 맵의 작동 방식에 익숙하지 않습니다.

1

실제로지도를 정렬하려는 이유를 알지 못합니다. 맵은 사전이며이 사전에서 관심있는 값 (멀티 맵의 경우 컬렉션)을 검색합니다.

멀티 맵의 경우 가져 오기 결과. 그러나 특정 값을 찾을 때 속도를 향상시키지 않으므로 정렬 된 Map의 장점은 무엇입니까?

+0

Map을 튜플 모음으로 생각하면이 문제가 적합합니다. Java의지도는 컬렉션의 모든 인스턴스에 색인을 할당하는 방법입니다. 예를 들어지도를 구문 PK가 아닌 테이블로 간주합니다. 1-> orange, 2-> banana 지도를 ** 튜플 모음 **으로 사용하기 시작할 때 문제가 발생합니다. George-> Constanza, Jerry-> Seinfeld. 그런 다음 이름이나 성 (키 또는 값)으로 맵을 정렬해야 할 수도 있습니다. Java가 튜플 'alla'Python을 제공하는 경우 문제가되지 않습니다. – llappall

+0

설명을 이해할 수 없습니다. 어느 것이 든 완전한 Map을 반복하거나, 키를 가지고 값을 검색 할 것이다. 두 경우 모두 정렬이 필요하지 않습니다. 당신의 튜플 컬렉션이 유효하다고 생각하지만, 이것을 위해 Multimap을 사용하지 않을 것입니다. 또한 튜플 예제에 다른 데이터 구조를 사용합니다. – boutta

0

가장 쉬운 해결책은 구아바의 TreeMultimap을 사용하는 것입니다. 사용하여 직접

TreeMultimap<...> sortedMap = TreeMultimap.create(notSortedMultiMap); 

당신의 키와 값 자연스럽게 (Comparable를 구현) 정렬 할 경우, 또는

TreeMultimap<...> sortedMap = TreeMultimap.create(keyComparator, valueComparator); 
sortedMap.putAll(notSortedMultiMap); 

사용자 정의 비교기를 제공해야하는 경우

.

정렬이 필요하고 검색 속도에 별 관심이 없다는 것을 알고 있다면 당연히 TreeMap을 아주 처음부터 사용할 수 있습니다.

그러면 TreeMap을 반복하거나 values ​​() 또는 항목을 사용하여 정렬 된 컬렉션을 얻을 수 있습니다.

관련 문제