Java에서 MultiMap을 정렬해야하는 이유는 무엇입니까?Java에서 MultiMap <k,v>을 어떻게 분류합니까?
답변
org.apache.commons.collections.MultiMap
에 대해 이야기한다고 가정하면 다음을 할 수 없습니다. List
이 아닌 Collection
을 리턴하기 때문에 주문 개념을 지원하지 않습니다.
org.apache.commons.collections.MultiHashMap
에 대해 이야기하고 있다면 키를 반복하고 ArrayList
을 반품하고 Collections.sort()
을 사용하여 정렬하면됩니다.
that implementation though을 사용한다고 가정합니다.
정렬 목록을 지원하는 자신의 MultiMap
을 쉽게 구현할 수있는 방법은 없습니다. HashMap<K, Collection<V>>
처럼 쉬울 수도 있습니다. 멀티 맵의 작동 방식에 익숙하지 않습니다.
실제로지도를 정렬하려는 이유를 알지 못합니다. 맵은 사전이며이 사전에서 관심있는 값 (멀티 맵의 경우 컬렉션)을 검색합니다.
멀티 맵의 경우 가져 오기 결과. 그러나 특정 값을 찾을 때 속도를 향상시키지 않으므로 정렬 된 Map의 장점은 무엇입니까?
Map을 튜플 모음으로 생각하면이 문제가 적합합니다. Java의지도는 컬렉션의 모든 인스턴스에 색인을 할당하는 방법입니다. 예를 들어지도를 구문 PK가 아닌 테이블로 간주합니다. 1-> orange, 2-> banana 지도를 ** 튜플 모음 **으로 사용하기 시작할 때 문제가 발생합니다. George-> Constanza, Jerry-> Seinfeld. 그런 다음 이름이나 성 (키 또는 값)으로 맵을 정렬해야 할 수도 있습니다. Java가 튜플 'alla'Python을 제공하는 경우 문제가되지 않습니다. – llappall
설명을 이해할 수 없습니다. 어느 것이 든 완전한 Map을 반복하거나, 키를 가지고 값을 검색 할 것이다. 두 경우 모두 정렬이 필요하지 않습니다. 당신의 튜플 컬렉션이 유효하다고 생각하지만, 이것을 위해 Multimap을 사용하지 않을 것입니다. 또한 튜플 예제에 다른 데이터 구조를 사용합니다. – boutta
가장 쉬운 해결책은 구아바의 TreeMultimap을 사용하는 것입니다. 사용하여 직접
TreeMultimap<...> sortedMap = TreeMultimap.create(notSortedMultiMap);
당신의 키와 값 자연스럽게 (Comparable를 구현) 정렬 할 경우, 또는
TreeMultimap<...> sortedMap = TreeMultimap.create(keyComparator, valueComparator);
sortedMap.putAll(notSortedMultiMap);
사용자 정의 비교기를 제공해야하는 경우
.정렬이 필요하고 검색 속도에 별 관심이 없다는 것을 알고 있다면 당연히 TreeMap을 아주 처음부터 사용할 수 있습니다.
그러면 TreeMap을 반복하거나 values () 또는 항목을 사용하여 정렬 된 컬렉션을 얻을 수 있습니다.
- 1. Java에서 k-ary 트리
- 2. Java HashMap을 <K,V>을 XML에 덤프하고 다시
- 3. Perl과 Multimap
- 4. SortedList <K,V> 대 SortedDictionary <K,V> 대 사전 <K,V>
- 5. MapReduce - 상대 값 (평균, 최고 k 등)을 어떻게 계산합니까?
- 6. Concurrent multimap 넣기 및 제거
- 7. Multimap 및 shared_ptr
- 8. 벡터 <pair <int,int>>을 multimap <int,int>으로 효율적으로 변환하는 방법은 무엇입니까?
- 9. k-means의 구현을 어떻게 테스트합니까?
- 10. Google 컬렉션 'Multimap <?, Object>을 통해 반복하는 방법은 무엇인가요?
- 11. 지도 대지도 <K,V>
- 12. std :: multimap 컴파일 오류
- 13. multimap (apache collection type)을 사용하여 콜렉션을 사용하는 방법
- 14. 이력서 또는 홍보 자료에서 언어 및 기술을 어떻게 분류합니까?
- 15. MVC 필터링을 사용하면 A-Z로 음악 사이트의 아티스트를 어떻게 분류합니까?
- 16. Qt는 C++ 라이브러리로 분류됩니까? 도서관이 아니라면 QT를 어떻게 분류합니까?
- 17. 언어를 일반, 문맥 자유 및 구문 구조로 어떻게 분류합니까?
- 18. C# : Dictionary <K,V>은 (KeyValuePair <K,V>)을 추가하지 않고도 ICollection <KeyValuePair>를 작성할 수 있습니까?
- 19. std :: list or std :: multimap
- 20. C++ multimap equal_range found nothing
- 21. IEnumerable <T>을 어떻게 조롱합니까?
- 22. 고정리스트 <T>을 어떻게 초기화합니까?
- 23. R에서 "<< -"(범위 지정)을 어떻게 사용합니까?
- 24. C++의 배열에 연산자 <<을 어떻게 오버로드합니까?
- 25. '<Ctrl> - <Tab>`을 Konsole에 어떻게 전달합니까?
- 26. 어떻게</p> <p>을 아이 패드
- 27. C++에서`cout << "output";`을 실행하면 어떻게 될까요?
- 28. STL Multimap 값 제거/삭제
- 29. VIM의 일반 모드에서 "K"버튼을 어떻게 사용합니까?
- 30. k-means ++는 정확히 어떻게 작동합니까?
나는 다시 열어이 질문을 제안한다 – mdec
나는 또한 그것을 제안한다. –
"Java에서 MultiMap을 어떻게 정렬합니까?"에 대해 진짜가 아닌 것은 무엇입니까? 나는 mdec과 Steve와 붙어있다. +1 재개! –
Burkhard