HashMap與TreeMap的排序以及四種遍歷方式

一、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()獲取值。

 

詳細解析請查看我的另一篇轉載文章:HashMap(JDK1.8)源碼解析 ----> HashMap的四種遍歷方式

 

發佈了37 篇原創文章 · 獲贊 161 · 訪問量 49萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章