java學習筆記(5)——常見的集合和方法(2)

Map接口

Map接口提供了將key映射到值的對象。一個映射不能包含重復的key,每個key最多只能映射到一個值。Map集合中允許值對象為null,而且沒有個數(shù)限制。

image.png
import java.util.*;

public class Mapdemo {

    public static void main(String[] args) {
        // 創(chuàng)建Map實例
        Map<String, String> map = new HashMap<>();
        // 向Map中添加對象
        map.put("01", "李同學");
        map.put("02", "魏同學");
        // 構建Map集合中所有key對象的集合
        Set<String> set = map.keySet();
        Iterator<String> it = set.iterator();
        System.out.println("key集合中的元素:");
        // 遍歷集合
        while (it.hasNext()) {
            System.out.println(it.next());
        }

        // 構建Map集合中所有values值的集合
        Collection<String> coll = map.values();
        Iterator<String> jt = coll.iterator();
        System.out.println("values集合中的元素:");
        // 遍歷集合
        while (jt.hasNext()) {
            System.out.println(jt.next());
        }
    }
}

Map接口常用的實現(xiàn)類有HashMap和TreeMap。HashMap類實現(xiàn)的Map集合添加和刪除映射關系效率更高。HashMap是基于哈希表的Map接口的實現(xiàn),HashMap通過哈希碼對其內(nèi)部的映射關系進行快速查找;而TreeMap中的映射關系存在一定的順序,如果希望Map集合中的對象也存在一定的順序,應該使用TreeMap類實現(xiàn)Map集合。

  • HashMap類基于哈希表的Map接口實現(xiàn),此實現(xiàn)提供所有可選的映射操作,并允許使用null值和null鍵,但必須保證鍵的唯一性。HashMap通過哈希表對其內(nèi)部的映射關系進行快速查找。此類不保證映射的順序,特別是它不保證該順序恒久不變。

  • TreeMap類不僅實現(xiàn)了Map接口,還實現(xiàn)了java.util.SortedMap接口,因此,集合中的映射關系具有一定的順序。但在添加、刪除和定位映射關系時,TreeMap類比HashMap類性能稍差。由于TreeMap類實現(xiàn)的Map集合中的映射關系是根據(jù)鍵對象按照一定的順序排列的,因此不允許鍵對象是null。TreeMap<E,E> treemap.putAll(Map m)方法是將所有鍵值對從Map m復制到另一個映射 treemap。

可以通過HashMap類創(chuàng)建Map集合,當需要順序輸出時,再創(chuàng)建一個完成相同映射關系的TreeMap類實例。
例如:通過HashMap類實例化Map集合,并遍歷該Map集合,然后創(chuàng)建TreeMap實例實現(xiàn)將集合中的元素順序輸出。
TreeMap<E,E> treemap.putAll(Map m)方法是將所有鍵值對從Map m復制到另一個映射 treemap。

實例:

public class Emp {
    private String e_id;
    private String e_name;

    public Emp(String e_id, String e_name) {
        this.e_id = e_id;
        this.e_name = e_name;
    }

    public String getEId() {
        return e_id;
    }

    public void setEId(String e_id) {
        this.e_id = e_id;
    }

    public String getEName() {
        return e_name;
    }

    public void setEName(String e_name) {
        this.e_name = e_name;
    }
}
import java.util.*;

public class MapText {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
        Emp emp = new Emp("351", "張三");
        Emp emp2 = new Emp("512", "李四");
        Emp emp3 = new Emp("853", "王一");
        Emp emp4 = new Emp("125", "趙六");
        Emp emp5 = new Emp("341", "黃七");

        map.put(emp4.getEId(), emp4.getEName());
        map.put(emp5.getEId(), emp5.getEName());
        map.put(emp.getEId(), emp.getEName());
        map.put(emp2.getEId(), emp2.getEName());
        map.put(emp3.getEId(), emp3.getEName());

        // 獲取Map集合中的key對象集合
        Set<String> set = map.keySet();
        Iterator<String> it = set.iterator();
        System.out.println("HashMap類實現(xiàn)的Map集合,無序:");

        while (it.hasNext()) {
            String str = it.next();
            String name = map.get(str);
            System.out.println(str + " " + name);
        }

        TreeMap<String, String> treemap = new TreeMap<>();
        // 將映射map保存在此treemap中
        treemap.putAll(map);
        Iterator<String> iter = treemap.keySet().iterator();
        System.out.println("TreeMap類實現(xiàn)的Map集合,鍵對象升序:");
        while (iter.hasNext()) {
            String str = (String) iter.next();
            String name = (String) map.get(str);
            System.out.println(str + " " + name);
        }
    }
}

參考原文:https://blog.csdn.net/weixin_44860226/article/details/125292656

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容