Map은 키-값 쌍의 컬렉션 인터페이스입니다. 구현 클래스에는 주로 HashMap, TreeMap, Hashtable 및 LinkedHashMap 등이 포함됩니다.
•TreeMap: Red-Black 트리를 기반으로 하는 NavigableMap 구현으로, 키의 자연스러운 순서에 따라 정렬되거나 사용된 구성 방법에 따라 맵을 생성할 때 제공된 Comparator에 따라 정렬됩니다.
•HashMap의 값이 순서가 아닙니다. 키의 HashCode에 따라 구현됩니다. 순서가 지정되지 않은 HashMap에 대한 정렬을 어떻게 구현합니까? TreeMap의 값 정렬을 참고하세요.
Map.Entry는 컬렉션 보기를 반환합니다.
키별 정렬
TreeMap은 기본적으로 오름차순으로 정렬됩니다. 정렬 방법을 변경해야 하는 경우 비교기인 Comparator를 사용해야 합니다. Comparator는 컬렉션 개체나 배열을 정렬할 수 있는 비교기 인터페이스입니다. 이 인터페이스의 공용 Compare(T o1, To2) 메서드를 구현하면 정렬이 가능합니다.
참고: 다음 코드는 Jdk1.6에서 테스트되었습니다.
TreeMap은 기본적으로 키 기준 오름차순으로 정렬됩니다.
public static void keyUpSort() { // 默认情况,TreeMap按key升序排序 Map<String, Integer> map = new TreeMap<String, Integer>(); map.put("acb1", 5); map.put("bac1", 3); map.put("bca1", 20); map.put("cab1", 80); map.put("cba1", 1); map.put("abc1", 10); map.put("abc2", 12); // 默认情况下,TreeMap对key进行升序排序 System.out.println("------------正常情况,TreeMap按key升序排序--------------------"); for (Map.Entry<String, Integer> entry : map.entrySet()) { System.out.println(entry.getKey() + ":" + entry.getValue()); } }
정렬 수정 TreeMap의 방법, 키에 의한 내림차순 정렬
public static void keyDownSort() { // TreeMap,按key降序排序 // 降序排序比较器 Comparator<String> keyComparator = new Comparator<String>() { @Override public int compare(String o1, String o2) { // TODO Auto-generated method stub return o2.compareTo(o1); } }; Map<String, Integer> map = new TreeMap<String, Integer>(keyComparator); map.put("acb1", 5); map.put("bac1", 3); map.put("bca1", 20); map.put("cab1", 80); map.put("cba1", 1); map.put("abc1", 10); map.put("abc2", 12); System.out.println("------------TreeMap按key降序排序--------------------"); for (Map.Entry<String, Integer> entry : map.entrySet()) { System.out.println(entry.getKey() + ":" + entry.getValue()); } }
값에 의한 정렬
다음은 TreeMap에 의한 값에 의한 오름차순 정렬만 보여줍니다. , 이는 HashMap에도 적용됩니다.
TreeMap의 정렬 방법을 수정하고 Value의 오름차순으로 정렬
참고: 일반적인 상황에서는 Collections.sort() 메서드를 사용하여 Map을 정렬할 수 없지만 Map을 변환할 수 있습니다. 목록으로 다시 정렬하세요.
public static void valueUpSort() { // 默认情况,TreeMap按key升序排序 Map<String, Integer> map = new TreeMap<String, Integer>(); map.put("acb1", 5); map.put("bac1", 3); map.put("bca1", 20); map.put("cab1", 80); map.put("cba1", 1); map.put("abc1", 10); map.put("abc2", 12); // 升序比较器 Comparator<Map.Entry<String, Integer>> valueComparator = new Comparator<Map.Entry<String,Integer>>() { @Override public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) { // TODO Auto-generated method stub return o1.getValue()-o2.getValue(); } }; // map转换成list进行排序 List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String,Integer>>(map.entrySet()); // 排序 Collections.sort(list,valueComparator); // 默认情况下,TreeMap对key进行升序排序 System.out.println("------------map按照value升序排序--------------------"); for (Map.Entry<String, Integer> entry : list) { System.out.println(entry.getKey() + ":" + entry.getValue()); } }
테스트 결과
------------正常情况,TreeMap按key升序排序-------------------- abc1:10 abc2:12 acb1:5 bac1:3 bca1:20 cab1:80 cba1:1 ------------TreeMap按key降序排序-------------------- cba1:1 cab1:80 bca1:20 bac1:3 acb1:5 abc2:12 abc1:10 ------------map按照value升序排序-------------------- cba1:1 bac1:3 acb1:5 abc1:10 abc2:12 bca1:20 cab1:80
위는 에디터에서 소개한 Java Map을 Value별로 정렬한 것이다. 질문이 있으신 경우 메시지를 남겨주시면 편집자가 제 시간에 답변해 드리겠습니다. 또한 PHP 중국어 웹사이트를 지원해 주신 모든 분들께 감사드립니다!
값에 따른 JavaMap 정렬 구현 방법과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!