Java mapのkeyとvalueを取得する方法

3051 ワード

mapのkeyとvalueを取得する方法は2つの形式に分けられる:map.keySet():mapのkeyを取得し、keyに基づいて対応するvalueを取得します.map.entrySet():mapのkeyとvalueを同時にクエリーし、一度だけクエリーする必要があります.以下はmapのkeyとvalueを取得し、map内の要素をkeyまたはvalueでサイズを比較してソートします.注意:mapのvalue値が等しい場合はkey値に基づいて並べ替えます
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

public class MapSort {

	/**
	 *   map key value         :

		map.keySet():   map key,    key     value;
		
		map..entrySet():    map key value,       ;
		
		     map key value,  map       key  value        ;
		
		  : map value    ,  key     
	 */
	public static void main(String[] args) {
		Map map = new HashMap();
		map.put("b","4");
		map.put("a","5");
		map.put("c","3");
		map.put("d","5");
		
		System.out.println("--------  map.keySet()  ---------");
		
		//  map.keySet()  
		//   :    key  ,    value;
		for(String key : map.keySet()){
			String value = map.get(key);
			System.out.println(key+"  "+value);
		}
		
		//   :     ,  key;
		Iterator iter = map.keySet().iterator();
	    while(iter.hasNext()){
	    	String key = iter.next();
	    	String value = map.get(key);
	    	System.out.println(key+" "+value);
	    }
	    
	    System.out.println("---------  map.entrySet()  --------");
	    
	    //  map.entrySet()  
	    //   :  map         ,    key value
	    for(Entry vo : map.entrySet()){
	    	vo.getKey();
	    	vo.getValue();
	    	System.out.println(vo.getKey()+"  "+vo.getValue());
	    }
	    
	    //     ,  key
	    Iterator> iter1 = map.entrySet().iterator();
	    while(iter1.hasNext()){
	    	Entry entry = iter1.next();
	    	String key = entry.getKey();
	    	String value = entry.getValue();
	    	System.out.println(key+" "+value);
	    }
	    
	    System.out.println("---------------  ---------------");
	    
	    // map    ArryList, list      Entry
	    List> list = new ArrayList>(map.entrySet());
	    Collections.sort(list,new Comparator>(){
		    @Override
		    public int compare(Entry o1, Entry o2) {
		    	int flag = o1.getValue().compareTo(o2.getValue());
		    	if(flag == 0){
		    		return o1.getKey().compareTo(o2.getKey());
		    	}
		    	return flag;
		    }
	    });
	    
	    //  list  map        
	    for(Entry en : list){
	    	System.out.println(en.getKey()+"  "+en.getValue());
	    }
	}
}
--------  map.keySet()  ---------
a  5
b  4
c  3
d  5
a 5
b 4
c 3
d 5
---------  map.entrySet()  --------
a  5
b  4
c  3
d  5
a 5
b 4
c 3
d 5
---------------  ---------------
c  3
b  4
a  5
d  5