1. 이론적 준비
Map은 키-값 쌍의 컬렉션 인터페이스입니다. 구현 클래스에는 주로 HashMap, TreeMap, Hashtable 및 LinkedHashMap 등이 포함됩니다.
TreeMap: Red-Black 트리를 기반으로 하는 NavigableMap 구현입니다. 이 트리는 키의 자연스러운 순서에 따라 정렬되거나, 사용된 구성 방법에 따라 맵이 생성될 때 제공된 Comparator에 따라 정렬됩니다.
HashMap의 값이 순서가 아닙니다. 키의 HashCode에 따라 구현됩니다. 순서가 지정되지 않은 HashMap에 대한 정렬을 어떻게 구현합니까? TreeMap의 값 정렬을 참고하세요.
Map.Entry는 컬렉션 보기를 반환합니다.
2. 키 정렬
TreeMap은 기본적으로 정렬 방법을 변경해야 하는 경우 비교기인 Comparator를 사용해야 합니다. Comparator는 컬렉션 객체나 배열을 정렬할 수 있는 비교기 인터페이스입니다. 이 인터페이스의 공개 Compare(T o1,To2) 메서드를 구현하면 다음과 같이 정렬이 가능합니다.
import java.util.Comparator; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; public class TreeMapTest { public static void main(String[] args) { Map<String, String> map = new TreeMap<String, String>( new Comparator<String>() { public int compare(String obj1, String obj2) { // 降序排序 return obj2.compareTo(obj1); } }); map.put("b", "ccccc"); map.put("d", "aaaaa"); map.put("c", "bbbbb"); map.put("a", "ddddd"); Set<String> keySet = map.keySet(); Iterator<String> iter = keySet.iterator(); while (iter.hasNext()) { String key = iter.next(); System.out.println(key + ":" + map.get(key)); } } }
실행 결과는 다음과 같습니다.
d:aaaaa c:bbbbb b:ccccc a:ddddd
3. 값 정렬
위의 예는 TreeMap의 키 값에 따라 정렬하는 것이지만 때로는 TreeMap의 값에 따라 정렬해야 할 때도 있습니다. 값을 정렬하려면 지정된 비교기에 의해 생성된 순서에 따라 지정된 목록을 정렬하는 Collections의 sort(List
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.TreeMap; public class TreeMapTest { public static void main(String[] args) { Map<String, String> map = new TreeMap<String, String>(); map.put("a", "ddddd"); map.put("c", "bbbbb"); map.put("d", "aaaaa"); map.put("b", "ccccc"); //这里将map.entrySet()转换成list List<Map.Entry<String,String>> list = new ArrayList<Map.Entry<String,String>>(map.entrySet()); //然后通过比较器来实现排序 Collections.sort(list,new Comparator<Map.Entry<String,String>>() { //升序排序 public int compare(Entry<String, String> o1, Entry<String, String> o2) { return o1.getValue().compareTo(o2.getValue()); } }); for(Map.Entry<String,String> mapping:list){ System.out.println(mapping.getKey()+":"+mapping.getValue()); } } }
실행 결과는 다음과 같습니다.
d:aaaaa c:bbbbb b:ccccc a:ddddd
위의 키별 정렬, 값별 정렬의 Java Map 구현 방법은 모두 편집자가 공유한 내용이므로 참조할 수 있기를 바라며, 또한 모든 분들이 PHP 중국어 웹사이트를 지원해 주시길 바랍니다.
키별 정렬, 값별 정렬 등 더 많은 Java Map 구현 방법을 보려면 PHP 중국어 웹사이트를 참고하세요!