자바 맵 은 key 로 정렬 하고 Value 로 정렬 합 니 다.

원본:http://blog.csdn.net/xiaoyu714543065/article/details/38519817
 
이론 적 준비
        Map 은 키 값 이 맞 는 집합 인터페이스 로 그 실현 유형 은 주로 HashMap, TreeMap, Hashtable, LinkedHashMap 등 을 포함한다.
        TreeMap: 빨간색 - Black tree (Red - Black tree) 의 NavigableMap 을 기반 으로 이 맵 은 키 의 자연 순서에 따라 정렬 하거나 맵 을 만 들 때 제공 하 는 Comparator 에 따라 정렬 하 며 구체 적 으로 사용 하 는 구조 방법 에 달 려 있 습 니 다.
        HashMap 의 값 은 순서 가 없습니다. key 의 HashCode 에 따라 이 루어 집 니 다. 이 무질서 한 HashMap 에 대해 우 리 는 어떻게 정렬 을 해 야 합 니까?TreeMap 의 value 정렬 을 참조 하 십시오.
        Map. Entry 는 Collections 보 기 를 되 돌려 줍 니 다.
 
2. key 정렬
        TreeMap 은 기본적으로 오름차 순 입 니 다. 정렬 방식 을 바 꾸 려 면 비교 기: Comparator 를 사용 해 야 합 니 다.Comparator 는 집합 대상 이나 배열 을 정렬 하 는 비교 기 인터페이스 로 이 인터페이스의 Public 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. value 정렬
        위의 예 는 TreeMap 의 key 값 에 따라 정렬 되 지만, 때때로 우 리 는 TreeMap 의 value 에 따라 정렬 해 야 한다.value 정렬 은 Collections 의 sort (List < T > list, Comparator c) 방법 을 빌려 야 합 니 다. 이 방법 은 지 정 된 비교 기 가 발생 하 는 순서에 따라 지 정 된 목록 을 정렬 합 니 다.그러나 하나의 전제 조건 이 있다. 그것 은 모든 요소 가 제공 하 는 비교 기 에 따라 비교 할 수 있어 야 한 다 는 것 이다. 다음 과 같다.
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

좋은 웹페이지 즐겨찾기