Java LinkedHashMap 類別:初學者的友善指南

介紹

你好,未來的 Java 巫師!今天,我們將踏上一段令人興奮的旅程,進入 LinkedHashMap 的世界。如果你以前從未寫過一行代碼,也別擔心——我將成為你的友善指南,我們將一起逐步探索這個主題。在這篇教程結束時,你會驚訝於你學到了多少!

Java - LinkedHashMap

LinkedHashMap就像一個神奇的盒子,可以按照特定的順序存儲你的項目(我們在編程中稱之為鍵值對)。想象一下你在書架上整理最喜歡的書籍。不僅可以快速找到任何你想找的書,而且还可以按照你添加它們的順序或者根據你閱讀它們的頻率來保持它們的順序。這正是LinkedHashMap為我們數據所做的!

類別聲明

讓我們從如何在 Java 中聲明一個 LinkedHashMap 開始:

import java.util.LinkedHashMap;

public class MyLinkedHashMapExample {
public static void main(String[] args) {
LinkedHashMap<String, Integer> myBookshelf = new LinkedHashMap<>();
}
}

在這個例子中,我們創建了一個名為myBookshelf的LinkedHashMap。<String, Integer>部分告訴 Java 我們將使用String鍵(書名)和Integer值(也許是頁數)。如果這看起來現在很困惑,也別擔心——我們會在進行時逐步解釋!

參數

當使用LinkedHashMap時,我們需要考慮一些參數:

  1. initialCapacity:這就像決定你的書架最初應該有多大。
  2. loadFactor:將其視為在需要更大書架之前,你的書架可以填滿的程度。
  3. accessOrder:這決定你的書是按照添加的時間還是訪問的頻率來排列。

讓我們看一個例子:

LinkedHashMap<String, Integer> myBookshelf = new LinkedHashMap<>(16, 0.75f, true);

在這裡,我們表示我們的初始書架可以容納16本書,當它們達到75%滿時,我們會考慮換一個更大的書架,並希望根據我們訪問它們的頻率來排列書籍。

類別構造器

LinkedHashMap 提供了多種創建我們神奇書架的方式。以下是主要的構造器:

  1. LinkedHashMap():創建一個具有默認設置的空 LinkedHashMap。
  2. LinkedHashMap(int initialCapacity):指定初始容量。
  3. LinkedHashMap(int initialCapacity, float loadFactor):指定初始容量和載入因子。
  4. LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder):指定所有三個參數。
  5. LinkedHashMap(Map<? extends K, ? extends V> m):創建一個具有與指定映射相同映射的LinkedHashMap。

讓我們嘗試使用不同的構造器創建LinkedHashMaps:

LinkedHashMap<String, Integer> shelf1 = new LinkedHashMap<>();
LinkedHashMap<String, Integer> shelf2 = new LinkedHashMap<>(20);
LinkedHashMap<String, Integer> shelf3 = new LinkedHashMap<>(20, 0.8f);
LinkedHashMap<String, Integer> shelf4 = new LinkedHashMap<>(20, 0.8f, true);

Map<String, Integer> existingMap = new HashMap<>();
existingMap.put("Java Basics", 200);
LinkedHashMap<String, Integer> shelf5 = new LinkedHashMap<>(existingMap);

這些根據我們的需求創建了略有不同的“書架”。Java 有多麼靈活,不覺得嗎?

類別方法

現在,讓我們看看LinkedHashMap中一些最常用的方法。我會以表格格式呈現它們,以方便參考:

方法 描述
put(K key, V value) 向 LinkedHashMap 添加新的鍵值對
get(Object key) 檢索與指定鍵相關聯的值
remove(Object key) 刪除指定鍵的映射
clear() 從 LinkedHashMap 中刪除所有映射
size() 返回 LinkedHashMap 中鍵值對的數量
isEmpty() 如果 LinkedHashMap 為空,則返回 true
containsKey(Object key) 如果 LinkedHashMap 包含指定的鍵,則返回 true
containsValue(Object value) 如果 LinkedHashMap 包含指定的值,則返回 true
keySet() 返回 LinkedHashMap 中所有鍵的集合
values() 返回 LinkedHashMap 中所有值的集合
entrySet() 返回 LinkedHashMap 中所有鍵值對的集合

讓我們看看其中一些方法的作用:

LinkedHashMap<String, Integer> myBookshelf = new LinkedHashMap<>();

// 將書添加到我們的書架
myBookshelf.put("Java Basics", 200);
myBookshelf.put("Data Structures", 350);
myBookshelf.put("Algorithms", 400);

// 獲取 "Java Basics" 的頁數
int javaPages = myBookshelf.get("Java Basics");
System.out.println("Java Basics 有 " + javaPages + " 頁。");

// 檢查我們是否有關於 Python 的書
boolean hasPython = myBookshelf.containsKey("Python for Beginners");
System.out.println("我們有 Python 書嗎? " + hasPython);

// 刪除 Algorithms 書
myBookshelf.remove("Algorithms");

// 列印所有書名
for (String title : myBookshelf.keySet()) {
System.out.println("書名: " + title);
}

這段代碼演示了如何向我們的書架添加書籍,檢索有關它們的信息,檢查我們是否有某些書,刪除書籍,以及列印我們所有的書籍。很乾淨利落,對嗎?

繼承的方法

LinkedHashMap還從其父類繼承了方法。以下是一些重要的:

繼承自 方法
HashMap clone(), compute(), computeIfAbsent(), computeIfPresent(), merge()
AbstractMap equals(), hashCode(), toString()
Object finalize(), getClass(), notify(), notifyAll(), wait()

這些繼承的方法提供了在某些情況下可能非常有用的額外功能。

從 LinkedHashMap 獲取值的示例

讓我們以創建一個LinkedHashMap,添加一些值並檢索它們的完整示例來結束:

import java.util.LinkedHashMap;

public class BookshelfExample {
public static void main(String[] args) {
LinkedHashMap<String, Integer> myBookshelf = new LinkedHashMap<>();

// 將書添加到我們的書架
myBookshelf.put("Java Basics", 200);
myBookshelf.put("Data Structures", 350);
myBookshelf.put("Algorithms", 400);

// 檢索並打印有關每本書的信息
for (String title : myBookshelf.keySet()) {
int pages = myBookshelf.get(title);
System.out.println("書名 '" + title + "' 有 " + pages + " 頁。");
}

// 獲取特定的書
String bookToFind = "Data Structures";
if (myBookshelf.containsKey(bookToFind)) {
int pages = myBookshelf.get(bookToFind);
System.out.println("\n找到了! '" + bookToFind + "' 有 " + pages + " 頁。");
} else {
System.out.println("\n很抱歉,我們的書架上沒有 '" + bookToFind + "'。");
}
}
}

輸出

運行此代碼時,你將看到類似以下的輸出:

書名 'Java Basics' 有 200 頁。
書名 'Data Structures' 有 350 頁。
書名 'Algorithms' 有 400 頁。

找到了! 'Data Structures' 有 350 頁。

就是這樣!你剛剛使用LinkedHashMap創建了自己的數字書架。你可以添加書籍,找出它們有多少頁,甚至檢查書架上是否有特定的書。編程不是太驚人了嗎?

記住,就像整理實際的書架一樣,你練習使用LinkedHashMap的次數越多,你對它的感覺就越舒適。不要害怕實驗和嘗試不同的東西。開心編程,未來的 Java 專家!

Credits: Image by storyset