Map的遍歷與排序
阿新 • • 發佈:2018-12-19
引言:集合是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();
}
});