Java HashMap 和 HashSet 的高效使用技巧

小万哥丶發表於2024-03-11

Java HashMap

HashMap 是一種雜湊表,它儲存鍵值對。鍵用於查詢值,就像陣列中的索引一樣。HashMap 的優勢在於它可以使用任何型別作為鍵,並且查詢速度很快。

建立 HashMap

// 匯入 HashMap 類
import java.util.HashMap;

public class Main {
    public static void main(String[] args) {
        // 建立一個名為 capitalCities 的 HashMap 物件,將儲存 String 鍵和 String 值
        HashMap<String, String> capitalCities = new HashMap<>();
    }
}

新增專案

// 新增鍵和值(國家,城市)
capitalCities.put("England", "London");
capitalCities.put("Germany", "Berlin");
capitalCities.put("Norway", "Oslo");
capitalCities.put("USA", "Washington DC");

訪問專案

// 獲取 England 的首都
String capitalOfEngland = capitalCities.get("England");

刪除專案

// 刪除 England 的首都
capitalCities.remove("England");

HashMap 大小

// 獲取 HashMap 中的專案數量
int size = capitalCities.size();

迴圈遍歷 HashMap

// 遍歷 HashMap 並列印鍵和值
for (String key : capitalCities.keySet()) {
    String value = capitalCities.get(key);
    System.out.println("Key: " + key + ", Value: " + value);
}

使用其他型別

HashMap 可以儲存任何型別的鍵和值。例如,您可以儲存 Integer 鍵和 String 值:

// 建立一個名為 people 的 HashMap 物件,將儲存 Integer 鍵和 String 值
HashMap<Integer, String> people = new HashMap<>();

// 新增鍵和值(ID,姓名)
people.put(1, "John Doe");
people.put(2, "Jane Doe");

// 獲取 ID 為 1 的姓名
String name = people.get(1);

HashMap 是一種強大的資料結構,可用於儲存各種型別的資料。它具有快速查詢速度和靈活的鍵值對儲存機制,使其成為許多應用程式的理想選擇。

HashMap 的優勢:

  • 快速查詢速度
  • 可以儲存任何型別的鍵和值
  • 靈活的鍵值對儲存機制

HashMap 的劣勢:

  • 不是執行緒安全的
  • 可能會出現雜湊碰撞

建議:

  • 如果需要快速查詢資料,請使用 HashMap
  • 如果需要執行緒安全的資料結構,請使用 ConcurrentHashMap
  • 如果需要避免雜湊碰撞,請使用 LinkedHashMap

Java HashSet

HashSet 是一個無序集合,其中每個元素都是唯一的。它基於雜湊表實現,因此查詢速度很快。

建立 HashSet

// 匯入 HashSet 類
import java.util.HashSet;

public class Main {
    public static void main(String[] args) {
        // 建立一個名為 cars 的 HashSet 物件,將儲存字串
        HashSet<String> cars = new HashSet<>();
    }
}

新增專案

// 新增專案
cars.add("Volvo");
cars.add("BMW");
cars.add("Ford");
cars.add("BMW"); // 不會重複新增
cars.add("Mazda");

// 檢視 HashSet
System.out.println(cars);

檢查專案是否存在

// 檢查專案是否存在
boolean isPresent = cars.contains("Mazda");

// 輸出結果
System.out.println("Mazda 在 HashSet 中嗎? " + isPresent);

刪除專案

// 刪除專案
cars.remove("Volvo");

// 檢視 HashSet
System.out.println(cars);

HashSet 大小

// 獲取 HashSet 大小
int size = cars.size();

// 輸出結果
System.out.println("HashSet 大小:" + size);

迴圈遍歷 HashSet

// 迴圈遍歷 HashSet
for (String car : cars) {
    System.out.println(car);
}

使用其他型別

HashSet 可以儲存任何型別的元素。例如,您可以儲存 Integer 元素:

// 建立一個名為 numbers 的 HashSet 物件,將儲存整數
HashSet<Integer> numbers = new HashSet<>();

// 新增元素
numbers.add(1);
numbers.add(2);
numbers.add(3);

// 迴圈遍歷 HashSet
for (int number : numbers) {
    System.out.println(number);
}

HashSet 是一種非常有用的資料結構,可用於儲存各種型別的資料。它具有快速查詢速度和無序的特點,使其成為許多應用程式的理想選擇。

HashSet 的優勢:

  • 快速查詢速度
  • 無序,可以更快地新增和刪除元素
  • 允許儲存任何型別的元素

HashSet 的劣勢:

  • 不保留元素的插入順序
  • 可能會出現雜湊碰撞

建議:

  • 如果需要快速查詢資料並且不需要保留元素的插入順序,請使用 HashSet
  • 如果需要保留元素的插入順序,請使用 LinkedHashSet
  • 如果需要避免雜湊碰撞,請使用 TreeMap

最後

為了方便其他裝置和平臺的小夥伴觀看往期文章:

微信公眾號搜尋:Let us Coding,關注後即可獲取最新文章推送

看完如果覺得有幫助,歡迎 點贊、收藏、關注

相關文章