자바 맵 정렬

3848 단어 지도 정렬
자바 에서 맵 (HashMap, TreeMap, Hashtable 등) 에 대한 정렬 시간 
       우선 그들 사이 의 차 이 를 간단히 말 해 보 자. HashMap: 가장 많이 사용 되 는 Map 은 키 의 HashCode 값 에 따라 데 이 터 를 저장 하고 키 에 따라 값 을 직접 얻 을 수 있 으 며 빠 른 접근 속 도 를 가지 고 있 습 니 다.HashMap 은 최대 한 개의 기록 키 만 Null (여러 개의 겹 쳐 쓰기) 로 허용 합 니 다.여러 개의 기록 값 을 Null 로 허용 합 니 다.비동기 적. TreeMap: 저 장 된 기록 을 키 (key) 에 따라 정렬 할 수 있 습 니 다. 기본 값 은 오름차 순 으로 정렬 할 수도 있 고 정렬 된 비교 기 를 지정 할 수도 있 습 니 다. Iterator 로 TreeMap 을 옮 겨 다 닐 때 얻 은 기록 은 정렬 된 것 입 니 다.TreeMap 에 서 는 key 의 값 을 null 로 허용 하지 않 습 니 다.비동기 적. Hashtable: HashMap 과 유사 합 니 다. 다른 것 은 key 와 value 의 값 은 null 로 허용 되 지 않 습 니 다.이 는 스 레 드 의 동기 화 를 지원 합 니 다. 즉, 어느 순간 하나의 스 레 드 만 Hashtable 을 쓸 수 있 기 때문에 Hashtale 는 기록 할 때 느 립 니 다. 링크 드 하 쉬 맵: 기록 의 삽입 순 서 를 저장 합 니 다. Iterator 로 링크 드 하 쉬 맵 을 옮 겨 다 닐 때 먼저 받 은 기록 은 반드시 먼저 삽 입 된 것 입 니 다. 옮 겨 다 닐 때 하 쉬 맵 보다 느 립 니 다.key 와 value 는 모두 비어 있 고 동기 화 되 지 않 습 니 다. 
TreeMap 비교 기 정렬:
Map<String,String> map = new TreeMap<String,String>(new Comparator<String>(){ 
   public int compare(String obj1,String obj2){ 
    //     
    return obj2.compareTo(obj1); 
   } 
  }); 
  map.put("month", "The month"); 
  map.put("bread", "The bread"); 
  map.put("attack", "The attack"); 
  
  Set<String> keySet = map.keySet(); 
  Iterator<String> iter = keySet.iterator(); 
  while(iter.hasNext()){ 
   String key = iter.next(); 
   System.out.println(key+":"+map.get(key)); 
  } 

 TreeMap 을 value 의 값 에 따라 정렬 하거나 HashMap, Hashtable, LinkedHashMap 을 정렬 하려 면 Map. Entry < K, V > 인터페이스 결합 List 를 사용 하여 구현 할 수 있 습 니 다. eg. 1 대 TreeMap 은 value 값 에 따라 순서 가 올 라 갑 니 다. 
List<Map.Entry<String,String>> mappingList = null; 
  Map<String,String> map = new TreeMap<String,String>(); 
  map.put("aaaa", "month"); 
  map.put("bbbb", "bread"); 
  map.put("ccccc", "attack"); 
  
  //  ArrayList     map.entrySet()   list 
  mappingList = new ArrayList<Map.Entry<String,String>>(map.entrySet()); 
  //            
  Collections.sort(mappingList, new Comparator<Map.Entry<String,String>>(){ 
   public int compare(Map.Entry<String,String> mapping1,Map.Entry<String,String> mapping2){ 
    return mapping1.getValue().compareTo(mapping2.getValue()); 
   } 
  }); 
  
  for(Map.Entry<String,String> mapping:mappingList){ 
   System.out.println(mapping.getKey()+":"+mapping.getValue()); 
  } 

 eg. 2. HashMap (또는 Hashtable, LinkedHashMap) 에 대해 key 의 값 에 따라 오름차 순: 
List<Map.Entry<String,String>> mappingList = null; 
  Map<String,String> map = new HashMap<String,String>(); 
  map.put("month", "month"); 
  map.put("bread", "bread"); 
  map.put("attack", "attack"); 
  
  //  ArrayList     map.entrySet()   list 
  mappingList = new ArrayList<Map.Entry<String,String>>(map.entrySet()); 
  //            
  Collections.sort(mappingList, new Comparator<Map.Entry<String,String>>(){ 
   public int compare(Map.Entry<String,String> mapping1,Map.Entry<String,String> mapping2){ 
    return mapping1.getKey().compareTo(mapping2.getKey()); 
   } 
  }); 
  
  for(Map.Entry<String,String> mapping:mappingList){ 
   System.out.println(mapping.getKey()+":"+mapping.getValue()); 
  } 

 개발 대학http://edu.codepub.com   원본 링크:http://edu.codepub.com/2010/1030/26837.php

좋은 웹페이지 즐겨찾기