1. 程式人生 > >Map的遍歷與排序

Map的遍歷與排序

引言:集合是java比較重要的一個知識點,而集合的遍歷尤為重要。 相對來說,Map又是集合中比較難懂的一部分,故今天來講一下Map的 遍歷與排序。

Map的遍歷

  • 較為簡單的遍歷方法可以通過keySet()方法獲取Map中的所有的key, 然後使用get(key)獲取key對應的value,程式碼如下:
Map<String, String> map = new HashMap<String, String>();
map.put("1","xinger");
//······省略部分程式碼
for(String s : map.keySet()){
   System.
out.println("key:"+s+","+"value:"+map.get(s)); }
  • 通過Map.entrySet()遍歷map:Map.entrySet()方法返回該地圖的集合檢視(Set(Map.Entry<K,V>))
for(Map.Entry<String, String> entry : map.entrySet()){  //引數型別請靈活處理
   System.out.println("key:"+entry.getKey()+","+"value:"+entry.getValue());
}
  • 通過迭代器遍歷Map:
  Iterator
(Map.Entry<String, String>) ite = map.entrySet().iterator(); while(ite.hasNext()){ Map.Entry<String, String> entry = ite.next(); System.out.println("key:"+entry.getKey()+","+"value:"+entry.getValue());z }

Map的排序

  • 利用TreeMap類進行排序:TreeMap是預設按key的升序排序,若要改變排序方式,需要使用比較器Comparator 並使用構造器TreeMap(Comparator<? super K> comparator)
    ,注意到泛型? super K,故本質還是進行按key排序。
Map<String,String> map = new TreeMap<String, String>(new Comparator<String>(){
                @Override
			public int compare(String o1, String o2) {
				return  o2.compareTo(p1);
});

  • Map按value排序:實現Comparator介面,並重寫compare(Object o1, Object o2)方法
 List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
		   //排序
		   Collections.sort(list, new Comparator<Map.Entry<String, Integer>>(){//內部類
			@Override
			public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
				return o2.getValue() - o1.getValue();
			}		   
		   });