《Map中HashMap與TreeMap的排序以及四種遍歷方式》
阿新 • • 發佈:2018-12-30
一、Map概述
1、Map是將鍵對映到值( key-value )的物件。一個對映不能包含重複的鍵;每個鍵最多隻能對映到一個值。
2、Map與Collection的區別
(1)Map 是以鍵值對的方式儲存元素,鍵唯一,值可以重複。
(2)Collection儲存的是單列元素,子介面Set元素唯一,子介面List可以重複。
(3)Map的資料結構針對鍵有效,跟值無關,Collection針對元素有效。
3、HashMap 與TreeMap 的建立,排序。
/*** * Map類的一些簡單操作 * 包括TreeMap的排序,HashMap的排序,四種遍歷方式 * @author Administrator * */ public class MapTest { public static void main(String[] args) { //建立map物件,並賦值 Map<String,String> treeMap = new TreeMap<String,String>(new Comparator<String>() { @Override public int compare(String o1, String o2) { return o1.compareTo(o2); } }); treeMap.put("sufow1", "舒泉1"); treeMap.put("sufow2", "舒泉2"); treeMap.put("sufow3", "舒泉3"); treeMap.put("sufow4", "舒泉4"); treeMap.put("sufow5", "舒泉5"); treeMap.put("sufow6", "舒泉6"); treeMap.put("sufow7", "舒泉7"); System.out.println("TreeMap"); //遍歷map 方式一,根據keyset方法獲取所有的key,再根據key獲取值 for(String str :treeMap.keySet()){ String val = treeMap.get(str); System.out.println(val); } Map<String,String> hashMap = new HashMap<String ,String>(); hashMap.put("sufow1", "舒泉1");//可以寫入null值 hashMap.put("sufow2", "舒泉2"); hashMap.put("sufow3", "舒泉3"); hashMap.put("sufow4", "舒泉4"); hashMap.put("sufow5", "舒泉5"); hashMap.put("sufow6", "舒泉6"); hashMap.put("sufow7", "舒泉7"); System.out.println("HashMap"); //先排序 List<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>(hashMap.entrySet()); //通過比較器來排序 Collections.sort(list, new Comparator<Map.Entry<String, String>>() { @Override public int compare(Entry<String, String> o1, Entry<String, String> o2) { return o1.getValue().compareTo(o2.getValue()); } }); //遍歷List,第二種通過Map.Entry for(Map.Entry<String, String> m :list){ String val = m.getValue(); System.out.println(val); } //第二種遍歷map的方式,根據迭代器Iterator Iterator<Map.Entry<String, String>> iterator = hashMap.entrySet().iterator(); while(iterator.hasNext()){ Map.Entry<String, String> map = iterator.next(); System.out.println(map.getKey()); System.out.println(map.getValue()); } //第三種通過values,只能遍歷value for(String str:hashMap.values()){ System.out.println(str); } //第四種,通過Map.Entry for(Map.Entry<String, String> map:hashMap.entrySet()){ System.out.println(map.getKey()); System.out.println(map.getValue()); } }
4、總結
(1)map排序的兩種方式
第一種:通過 new Comparator的介面,實現方法,進行排序。
第二種:先將Map轉換成List , 通過Collections的sort方法進行排序。
(2)Map的四種遍歷方式
第一種:通過Map的keySet()方法遍歷。
第二種:通過Map的values()方法遍歷。
第三種:通過Map的entrySet()方法的Iterator方法將轉換成Iterator。通過迭代器遍歷。
第四種:通過Map的entrySet()方法,將其轉換成Map.Entry物件,在通過foreach遍歷,通過Map.Entry物件的getValue()獲取值。