값에 따라 내 해시를 내림차순으로 정렬하고 싶습니다. Java로 어떻게 할 수 있습니까?Java의 값에 따라 맵을 정렬하는 가장 쉬운 방법은 무엇입니까?
6
A
답변
1
13
HashMap
(및 그 이전의 예비 체 Hashtable
)은 본질적으로 순서가 없다. 정렬하더라도 정렬되지 않은 상태로 유지됩니다. 게재 신청서를 유지하려면 LinkedHashMap
을 대신 사용하십시오. 삽입 순서에 관계없이 키에 자동 정렬을 사용하려는 경우 대신 SortedMap
을 사용하십시오.
값을으로 정렬하려면 기본적으로 키/값 쌍을 다른 종류의 정렬 가능한 데이터 구조 (예 : List<Entry<K, V>>
을 입력 한 다음 Compatator<Entry<K, V>>
을 사용하여 Collections#sort()
을 사용하여 정렬 한 다음 LinkedHashMap
을 다시 채우십시오 (HashMap
이 아님) 그렇지 않으면 주문이 다시 손실됩니다.
여기에 (옆으로 처리 명백한 런타임 예외를두고) 기본 예제 :
// Prepare.
Map<String, String> map = new HashMap<String, String>();
map.put("foo", "bar");
map.put("bar", "waa");
map.put("waa", "foo");
System.out.println(map); // My JVM shows {waa=foo, foo=bar, bar=waa}
// Get entries and sort them.
List<Entry<String, String>> entries = new ArrayList<Entry<String, String>>(map.entrySet());
Collections.sort(entries, new Comparator<Entry<String, String>>() {
public int compare(Entry<String, String> e1, Entry<String, String> e2) {
return e1.getValue().compareTo(e2.getValue());
}
});
// Put entries back in an ordered map.
Map<String, String> orderedMap = new LinkedHashMap<String, String>();
for (Entry<String, String> entry : entries) {
orderedMap.put(entry.getKey(), entry.getValue());
}
System.out.println(orderedMap); // {foo=bar, waa=foo, bar=waa}
이을 descencing 그것을 을 정렬하려면 다음 Comparator
을 사용합니다. 기본적으로 단지 비교 항목을 교환 : 여기
Collections.sort(entries, new Comparator<Entry<String, String>>() {
public int compare(Entry<String, String> e1, Entry<String, String> e2) {
return e2.getValue().compareTo(e1.getValue()); // Sorts descending.
}
});
0
내가 그것을 할 방법입니다
는public static <K, V extends Comparable<V>> Map<K, V> sortByValues(final Map<K, V> map) {
Comparator<K> valueComparator = new Comparator<K>() {
public int compare(K k1, K k2) {
int compare = map.get(k2).compareTo(map.get(k1));
if (compare == 0) return 1;
else return compare;
}
};
Map<K, V> sortedByValues = new TreeMap<K, V>(valueComparator);
sortedByValues.putAll(map);
return sortedByValues;
}
관련 문제
- 1. 태그 값에 따라 XML 리턴을 정렬하는 방법은 무엇입니까?
- 2. Android : WebView에서 비트 맵을 표시하는 가장 쉬운 방법은 무엇입니까?
- 3. GDI +를 사용하여 공통 기준선을 따라 여러 가지 글꼴로 텍스트를 정렬하는 가장 쉬운 방법은 무엇입니까?
- 4. 가장 쉬운 방법은 미국의 동적 히트 맵을 만드는 것입니다.
- 5. grep 수에 따라 파일을 정렬하는 방법은 무엇입니까?
- 6. 디자인에 따라 뷰를 올바르게 정렬하는 방법은 무엇입니까?
- 7. 체중에 따라 (템플릿에서) 필드를 정렬하는 방법은 무엇입니까?
- 8. 사이트 맵을 생성하는 가장 좋은 방법은 무엇입니까?
- 9. DropDownList의 값에 따라 ModalPopupExtender를 트리거하는 방법은 무엇입니까?
- 10. 비트 맵을 그리는 가장 빠른 방법은 무엇입니까?
- 11. 가장 쉬운 방법은
- 12. 가장 쉬운 방법은?
- 13. PHP, 가장 쉬운 방법은
- 14. viewcontrollers/xibs를 정렬하는 가장 좋은 방법은 무엇입니까?
- 15. Django : 개체의 __unicode __() 값에 따라 ModelForm의 Many2ManyField (Select Tag)를 정렬하는 방법은 무엇입니까?
- 16. 문자 코드 또는 ASCII 코드 값에 따라 텍스트 파일을 정렬하는 방법은 무엇입니까?
- 17. 텍스트를 세로로 정렬하는 방법은 무엇입니까?
- 18. SELECT 값에 따라 다른 페이지로 POST 하시겠습니까?
- 19. 전체 배열의 값을 설정하는 가장 쉬운 방법은 무엇입니까?
- 20. 바이트 배열을 WPF 비트 맵으로 변환하는 가장 쉬운 방법은 무엇입니까?
- 21. DOC 파일을 생성하는 가장 쉬운 방법은 무엇입니까?
- 22. XNA에 카메라를 배치하는 가장 쉬운 방법은 무엇입니까?
- 23. 열을 복제하는 가장 쉬운 방법은 무엇입니까?
- 24. DataTable을 TSV로 표시하는 가장 쉬운 방법은 무엇입니까?
- 25. 위도와 경도를 구하는 가장 쉬운 방법은 무엇입니까?
- 26. 트리거에서 부정을 만드는 가장 쉬운 방법은 무엇입니까?
- 27. 트윗을 데이터베이스에 저장하는 가장 쉬운 방법은 무엇입니까?
- 28. Java에서 'is'를 수행하는 가장 쉬운 방법은 무엇입니까?
- 29. 파이썬에서 그래프를 생성하는 가장 쉬운 방법은 무엇입니까?
- 30. xml을 html로 변환하는 가장 쉬운 방법은 무엇입니까?
당신은 당신의 문제에 대한 구체적 할 수 있습니까? 귀하의 실제 문제에 따라 가치에 따라 분류하는 대안이 될 수 있습니다. – Carl