首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java HashMap 核心用法與遍歷技巧全解析

     編輯:Java 相關知識

HashMap 基本特性

HashMap 是 Java 集合框架中最常用的 Map 實現,採用鍵值對存儲,根據鍵的哈希碼決定值的存儲位置。作為鍵的對象必須正確重寫 hashCode() 和 equals() 方法,以確保鍵的唯一性判斷準確。

基本操作範例

import java.util.Map;
import java.util.HashMap;

public class HashMapDemo {
    public static void main(String[] args) {
        Map<Integer, String> map = new HashMap<>();
        map.put(1, "Barcelona");
        map.put(2, "RealMadrid");
        map.put(3, "ManchesterUnited");
        map.put(4, "AC milan");
        map.put(5, null);
        map.put(null, null); // 允許鍵和值為 null

        System.out.println("完整映射: " + map);
        System.out.println("所有鍵: " + map.keySet());
        System.out.println("所有值: " + map.values());
        System.out.println("集合大小: " + map.size());
        System.out.println("包含鍵 2: " + map.containsKey(2));
        System.out.println("包含值 Barcelona: " + map.containsValue("Barcelona"));
        System.out.println("是否為空: " + map.isEmpty());

        map.remove(5);
        System.out.println("移除鍵 5 後: " + map);
        map.clear();
        System.out.println("清空後: " + map);
    }
}

控制台輸出結果:

兩種遍歷方式效能對比

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

public class HashMapIteration {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("Barcelona", 1);
        map.put("RealMadrid", 2);
        map.put("ManchesterUnited", 3);
        map.put("AC milan", 4);
        map.put("Chelsea", 5);

        // 方式一:entrySet 遍歷(推薦,效能較高)
        System.out.println("方式一:entrySet 遍歷");
        Iterator<Map.Entry<String, Integer>> iter = map.entrySet().iterator();
        while (iter.hasNext()) {
            Map.Entry<String, Integer> entry = iter.next();
            System.out.println("鍵:" + entry.getKey() + " <=> 值:" + entry.getValue());
        }

        // 方式二:keySet 遍歷(需額外 get 操作,效能較低)
        System.out.println("\n方式二:keySet 遍歷");
        Iterator<String> it = map.keySet().iterator();
        while (it.hasNext()) {
            String key = it.next();
            Integer val = map.get(key);
            System.out.println("鍵:" + key + " <=> 值:" + val);
        }

        // 增強 for 循環遍歷 entrySet
        System.out.println("\n增強 for 循環遍歷");
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println("鍵:" + entry.getKey() + " <=> 值:" + entry.getValue());
        }
    }
}

控制台輸出結果:

效能分析

  • entrySet:單次遍歷即可同時獲取鍵值,無需額外查找,效能最佳。
  • keySet:需遍歷兩次(一次轉迭代器,一次從 Map 獲取值),效能較低。

實用線上工具推薦

延伸閱讀

  • Java 數據結構與算法教程
  • Java 操作 DOM 節點技巧總結
  • Java 文件與目錄操作技巧匯總
  • Java 緩存操作技巧匯總
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved