前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。
1. 獲取map的值主要有四種方法,分為兩類:? ??
調用 map.keySet() 方法來獲取 key 和 value 的值;
通過 map.entrySet() 方法來取值。
?
2. 兩者區別:
前者主要是先獲取到所有的key的集合,當你需要查詢 value 的值的時候需要通過 key 來查詢 value。
后者則直接將 key 和 value 的鍵值對直接取出來,只用查詢一次。
性能上還是 map.entrySet() 更好一點,具體請參見?map.keySet() 和 map.EntrySet() 的比較?。?
?
3. 接下來就具體介紹一下四種遍歷方法以及 map 里面的元素通過 key 或者 value 來比較大小并排序:
[java]?view plain?copy
- package?com.sort;??
- ??
- import?java.util.ArrayList;??
- import?java.util.Collections;??
- import?java.util.Comparator;??
- import?java.util.HashMap;??
- import?java.util.List;??
- import?java.util.Map;??
- import?java.util.Map.Entry;??
- ??
- public?class?Test?{??
- ??
- ????public?static?void?main(String[]?args)?{??
- ????????Map<String,String>?map?=?new?HashMap<String,String>();??
- ????????map.put("b","4");??
- ????????map.put("a","5");??
- ????????map.put("c","3");??
- ????????map.put("d","5");??
- ??????????
- ????????//通過map.keySet()方法??
- ????????//方法一:通過得到key的值,然后獲取value;??
- ????????/*for(String?key?:?map.keySet()){?
- ????????????String?value?=?map.get(key);?
- ????????????System.out.println(key+"??"+value);?
- ????????}*/??
- ????????//使用迭代器,獲取key;??
- ????????/*Iterator<String>?iter?=?map.keySet().iterator();?
- ????????while(iter.hasNext()){?
- ????????????String?key=iter.next();?
- ????????????String?value?=?map.get(key);?
- ????????????System.out.println(key+"?"+value);?
- ????????}*/??
- ????????//通過map.entrySet()方法??
- ????????//方法一:循環map里面的每一對鍵值對,然后獲取key和value??
- ????????/*for(Entry<String,?String>?vo?:?map.entrySet()){?
- ????????????vo.getKey();?
- ????????????vo.getValue();?
- ????????????System.out.println(vo.getKey()+"??"+vo.getValue());?
- ????????}*/??
- ??????????
- ????????/*//使用迭代器,獲取key?
- ????????Iterator<Entry<String,String>>?iter?=?map.entrySet().iterator();?
- ????????while(iter.hasNext()){?
- ????????????Entry<String,String>?entry?=?iter.next();?
- ????????????String?key?=?entry.getKey();?
- ????????????String?value?=?entry.getValue();?
- ????????????System.out.println(key+"?"+value);?
- ????????}*/??
- ??????????
- ????????//將map<String,String>?轉化為ArryList,但list里面的元素為Entry<String,String>??
- ????????List<Entry<String,String>>?list?=?new?ArrayList<Map.Entry<String,String>>(map.entrySet());??
- ????????Collections.sort(list,new?Comparator<Entry<String,String>>(){??
- ????????????@Override??
- ????????????public?int?compare(Entry<String,?String>?o1,??
- ????????????????????Entry<String,?String>?o2)?{??
- ????????????????int?flag?=?o1.getValue().compareTo(o2.getValue());??
- ????????????????if(flag==0){??
- ????????????????????return?o1.getKey().compareTo(o2.getKey());??
- ????????????????}??
- ????????????????return?flag;??
- ????????????}??
- ????????});??
- ????????//遍歷list得到map里面排序后的元素??
- ????????for(Entry<String,?String>?en?:?list){??
- ????????????System.out.println(en.getKey()+"?"+en.getValue());??
- ????????}??
- ??????????
- ????}??
- ??
- }??
- ???
- ?
?
轉自:http://blog.csdn.net/fishroad/article/details/47421457