隔着超薄肉丝进入小说_男女刺激性视频大片_女教师的诱波多野结衣_一级欧美过瘾大片

當前位置: 首頁 / 技術干貨 / 正文
Map接口與HashMap集合

2022-12-22

map 集合 java

Map接口簡介

Map接口是一種雙列集合,它的每個元素都包含一個鍵對象Key和值對象Value,鍵和值對象之間存在一種對應關系,稱為映射。從Map集合中訪問元素時,只要指定了Key,就能找到對應的Value。

Map接口中的常用方法如下表。

1

HashMap集合

HashMap集合是Map接口的一個實現類,用于存儲鍵值映射關系,但HashMap集合沒有重復的鍵并且鍵值無序。接下來通過一個案例學習HashMap的用法。

Java
import java.util.HashMap;

public class Example14 {
    public static void main(String[] args) {
        HashMap map = new HashMap(); // 創建Map對象
        map.put("1", "張三"); // 存儲鍵和值
        map.put("2", "李四");
        map.put("3", "王五");
        System.out.println("1:" + map.get("1")); // 根據鍵獲取值
        System.out.println("2:" + map.get("2"));
        System.out.println("3:" + map.get("3"));
    }
}

Map集合中的鍵具有唯一性,現在向Map集合中存儲一個相同的鍵看看會出現什么情況,下面增加一行代碼,如下所示: 

Java
map.put("3", "趙六");

 Map中仍然只有3個元素,只是第二次添加的值“趙六”覆蓋了原來的值“王五”,這也證實了Map中的鍵必須是唯一的,不能重復,如果存儲了相同的鍵,后存儲的值則會覆蓋原有的值,簡而言之就是:鍵相同,值覆蓋。

在程序開發中,經常需要取出Map中所有的鍵和值,那么如何遍歷Map中所有的鍵值對呢?有兩種方式可以實現。

第一種方式就是先遍歷Map集合中所有的鍵,再根據鍵獲取相應的值。接下來通過一個案例來演示先遍歷Map集合中所有的鍵,再根據鍵獲取相應的值。 

Java
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

public class Example15 {
    public static void main(String[] args) {
        HashMap map = new HashMap(); // 創建Map集合
        map.put("1", "張三"); // 存儲鍵和值
        map.put("2", "李四");
        map.put("3", "王五");
        Set keySet = map.keySet(); // 獲取鍵的集合
        Iterator it = keySet.iterator(); // 迭代鍵的集合
        while (it.hasNext()) {
            Object key = it.next();
            Object value = map.get(key); // 獲取每個鍵所對應的值
            System.out.println(key + ":" + value);
        }
    }
}

 首先調用Map對象的KeySet()方法,獲得存儲Map中所有鍵的Set集合,然后通過Iterator迭代Set集合的每一個元素,即每一個鍵,最后通過調用get(String key)方法,根據鍵獲取對應的值。

Map集合的另外一種遍歷方式是先獲取集合中的所有的映射關系,然后從映射關系中取出鍵和值。接下來通過一個案例演示這種遍歷方式。

Java
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Example16 {
    public static void main(String[] args) {
        HashMap map = new HashMap(); // 創建Map集合
        map.put("1", "張三"); // 存儲鍵和值
        map.put("2", "李四");
        map.put("3", "王五");
        Set entrySet = map.entrySet(); // 返回此映射中包含的映射關系的Set視圖
        Iterator it = entrySet.iterator(); // 獲取Iterator對象
        while (it.hasNext()) {
            // 獲取集合中鍵值對映射關系
            Map.Entry entry = (Map.Entry) (it.next());
            Object key = entry.getKey(); // 獲取Entry中的鍵
            Object value = entry.getValue(); // 獲取Entry中的值
            System.out.println(key + ":" + value);
        }
    }
}

 首先調用Map對象的entrySet()方法獲得存儲在Map中所有映射的Set集合,這個集合中存放了Map.Entry類型的元素(Entry是Map內部接口),每個Map.Entry對象代表Map中的一個鍵值對,然后迭代Set集合,獲得每一個映射對象,并分別調用映射對象的getKey()和getValue()方法獲取鍵和值。

在Map中,還提供了一些操作集合的常用方法,例如,values()方法用于得到map實例中所有的value,返回值類型為Collection;size()方法獲取map集合類的大小;containsKey()方法用于判斷是否包含傳入的鍵;containsValue()方法用于判斷是否包含傳入的值;remove()方法用于根據key移除map中的與該key對應的value等。

接下來通過一個案例演示Map這些方法的使用。 

Java
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;

public class Example17 {
    public static void main(String[] args) {
        HashMap map = new HashMap(); // 創建Map集合
        map.put("1", "張三"); // 存儲鍵和值
        map.put("3", "李四");
        map.put("2", "王五");
        map.put("4", "趙六");
        System.out.println("集合大小為:" + map.size());
        System.out.println("判斷是否包含傳入的鍵:" + map.containsKey("2"));
        System.out.println("判斷是否包含傳入的值:" + map.containsValue("王五"));
        System.out.println("移除鍵為1的值是:" + map.remove("1"));
        Collection values = map.values();
        Iterator it = values.iterator();
        while (it.hasNext()) {
            Object value = it.next();
            System.out.println(value);
        }
    }
}

 從上面的例子可以看出,HashMap集合迭代出來元素的順序和存入的順序是不一致的。如果想讓這兩個順序一致,可以使用Java中提供的LinkedHashMap類,它是HashMap的子類,與LinkedList一樣,它也使用雙向鏈表來維護內部元素的關系,使Map元素迭代的順序與存入的順序一致。

接下來通過一個案例學習LinkedHashMap的用法: 

Java
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Set;

public class Example18 {
    public static void main(String[] args) {
        LinkedHashMap map = new LinkedHashMap(); // 創建Map集合
        map.put("1", "張三"); // 存儲鍵和值
        map.put("2", "李四");
        map.put("3", "王五");
        Set keySet = map.keySet();
        Iterator it = keySet.iterator();
        while (it.hasNext()) {
            Object key = it.next();
            Object value = map.get(key); // 獲取每個鍵所對應的值
            System.out.println(key + ":" + value);
        }
    }
}

分享: 更多

上一篇:TreeSet集合

下一篇:TreeMap集合

好程序員公眾號

  • · 剖析行業發展趨勢
  • · 匯聚企業項目源碼

好程序員開班動態

More+
  • HTML5大前端 <高端班>

    開班時間:2021-04-12(深圳)

    開班盛況

    開班時間:2021-05-17(北京)

    開班盛況
  • 大數據+人工智能 <高端班>

    開班時間:2021-03-22(杭州)

    開班盛況

    開班時間:2021-04-26(北京)

    開班盛況
  • JavaEE分布式開發 <高端班>

    開班時間:2021-05-10(北京)

    開班盛況

    開班時間:2021-02-22(北京)

    開班盛況
  • Python人工智能+數據分析 <高端班>

    開班時間:2021-07-12(北京)

    預約報名

    開班時間:2020-09-21(上海)

    開班盛況
  • 云計算開發 <高端班>

    開班時間:2021-07-12(北京)

    預約報名

    開班時間:2019-07-22(北京)

    開班盛況
IT培訓IT培訓
在線咨詢
IT培訓IT培訓
試聽
IT培訓IT培訓
入學教程
IT培訓IT培訓
立即報名
IT培訓

Copyright 2011-2023 北京千鋒互聯科技有限公司 .All Right 京ICP備12003911號-5 京公網安備 11010802035720號