자바 맵 정렬
3848 단어 지도 정렬
우선 그들 사이 의 차 이 를 간단히 말 해 보 자. 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