Java 中的關聯陣列

Mohammad Irfan 2023年10月12日
  1. 在 Java 中使用關聯陣列
  2. Java 中關聯陣列的摘要
  3. 在 Java 中實現關聯陣列
  4. 在 Java 中建立關聯陣列
  5. 在 Java 中將元素新增到關聯陣列
  6. 遍歷 Java 中關聯陣列的元素
  7. 在 Java 8 中使用 forEach() 方法遍歷關聯陣列的元素
Java 中的關聯陣列

關聯陣列是一種將元素集儲存在對中的陣列型別。它是鍵和值的集合,其中鍵是唯一的並且與一個值相關聯。

如果我們必須訪問關聯陣列中的元素,我們必須呼叫陣列的名稱並傳遞鍵我們要訪問的值

在 Java 中使用關聯陣列

例如,我們有一個名為標記的陣列,用於儲存卷號和學生的分數。

因此,如果我們必須訪問特定學生的標記,那麼我們可以像這樣呼叫標記 105,其中標記是陣列的名稱,105 是學生的卷號,而不是索引號如果我們使用 Java 語言,則不可能在陣列中。

因此關聯陣列不支援 Java,但我們可以使用 HashMap 輕鬆實現。Java 不支援關聯陣列,但可以使用 Map 來實現。

Java 中關聯陣列的摘要

HashMap<String, String> hashmap = new HashMap<>();
// method to add the key,value pair in hashmap
hashmap.put("Key1", "Value1");
hashmap.put("Key2", "Value2");
hashmap.put("Key3", "Value3");
// and many more...
// get the value 1 and 2
System.out.println(hashmap.get("Key1"));
System.out.println(hashmap.get("Key2"));
// and many more...

在 Java 中實現關聯陣列

為了在 Java 中實現關聯陣列,我們使用了 Map 介面的實現類 HashMap。讓我們一步一步來理解。

首先,匯入並初始化 HashMap,即使用以下語句建立一個 HashMap 例項。

import java.util.HashMap;
HashMap<String, String> hashmap = new HashMap<>();

然後,使用 put() 方法,將鍵值新增到 HashMap

hashmap.put("Key1", "Value1");

使用 entrySet() 方法將 HashMap 轉換為 Set 以刪除重複鍵。

Set<Map.Entry<String, String> > set = map.entrySet();

將 Set 轉換為我們想要的陣列 ArrayList

List<Map.Entry<String, String>> list = new ArrayList<>(set);

在 Java 中建立關聯陣列

在本例中,我們使用 HashMap 類在 Java 中實現關聯陣列。

看,它包含鍵值對格式的資料,我們使用 getKey() 方法訪問鍵和 getValue() 方法訪問值。

import java.io.*;
import java.util.*;
public class SimpleTesting {
  public static void main(String[] args) {
    HashMap<String, String> hashmap = new HashMap<>();
    hashmap.put("Virat", "Batsman");
    hashmap.put("Bumrah", "Bowler");
    hashmap.put("Jadeja", "All-rounder");
    hashmap.put("Pant", "Wicket-Keeper");

    Set<Map.Entry<String, String>> s = hashmap.entrySet();
    List<Map.Entry<String, String>> array = new ArrayList<>(s);
    for (int i = 0; i < array.size(); i++) {
      System.out.println(array.get(i).getKey() + " is " + array.get(i).getValue());
    }
  }
}

輸出:

Pant is Wicket-Keeper
Jadeja is All-rounder
Bumrah is Bowler
Virat is Batsman

正如我們已經討論過的,該鍵應該是唯一的。如果我們在關聯陣列中插入相同的鍵,它將丟棄鍵值對之一。

我們在下面的程式碼中插入了兩個相同的鍵 Virat。請參見下面的示例。

import java.io.*;
import java.util.*;
public class SimpleTesting {
  public static void main(String[] args) {
    HashMap<String, String> hashmap = new HashMap<>();
    hashmap.put("Virat", "Batsman");
    hashmap.put("Bumrah", "Bowler");
    hashmap.put("Jadeja", "All-rounder");
    hashmap.put("Pant", "Wicket-Keeper");
    hashmap.put("Virat", "Captain");

    Set<Map.Entry<String, String>> s = hashmap.entrySet();
    List<Map.Entry<String, String>> array = new ArrayList<>(s);
    for (int i = 0; i < array.size(); i++) {
      System.out.println(array.get(i).getKey() + " is " + array.get(i).getValue());
    }
  }
}

輸出:

Pant is Wicket-Keeper
Jadeja is All-rounder
Bumrah is Bowler
Virat is Captain

在 Java 中將元素新增到關聯陣列

我們可以使用 put() 方法將元素新增到地圖中的陣列中。類似地,我們可以使用 remove() 方法從陣列中刪除一個元素。

我們可以使用 size() 方法找出陣列的大小。

import java.util.HashMap;
public class SimpleTesting {
  public static void main(String[] args) {
    HashMap<String, String> fruits = new HashMap<String, String>();
    fruits.put("Apple", "Red");
    fruits.put("Banana", "Yellow");
    fruits.put("Guava", "Green");
    fruits.put("Blackberries", "Purple");

    System.out.println("The Size of fruits Map is : " + fruits.size());
    // Remove Banana from the HashMap
    fruits.remove("Banana");
    // To find out the size of the Hashmap
    System.out.println("The Size of fruits Map is : " + fruits.size());
    // Check whether the key is present in the Hashmap or not
    String fruit_key = "Apple";
    if (fruits.containsKey(fruit_key)) {
      System.out.println("The colour of " + fruit_key + " is: " + fruits.get(fruit_key));
    } else {
      System.out.println("There is no entry for the fruit of " + fruit_key);
    }
  }
}

輸出:

The Size of fruits Map is : 4
The Size of fruits Map is : 3
The colour of Apple is: Red

遍歷 Java 中關聯陣列的元素

我們可以使用 for-each 迴圈來遍歷關聯陣列。由於 HashMap 屬於 java.util 包,我們可以使用 foreach 迴圈來迭代它的元素。

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

public class SimpleTesting {
  public static void main(String[] args) {
    HashMap<String, String> fruits = new HashMap<String, String>();
    fruits.put("Apple", "Red");
    fruits.put("Banana", "Yellow");
    fruits.put("Guava", "Green");
    fruits.put("Blackberries", "Purple");
    System.out.println("The Size of fruits Map is : " + fruits.size());
    for (Map.Entry element : fruits.entrySet()) {
      String key = (String) element.getKey();
      System.out.println(key + " : " + element.getValue());
    }
  }
}

輸出:

The Size of fruits Map is : 4
Guava : Green
Apple : Red
Blackberries : Purple
Banana : Yellow

在 Java 8 中使用 forEach() 方法遍歷關聯陣列的元素

如果你使用的是 Java 8 或更高版本,則可以使用 forEach() 方法來遍歷陣列元素。forEach() 方法需要一個 lambda 表示式作為引數。

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

public class SimpleTesting {
  public static void main(String[] args) {
    HashMap<String, String> fruits = new HashMap<String, String>();
    fruits.put("Apple", "Red");
    fruits.put("Banana", "Yellow");
    fruits.put("Guava", "Green");
    fruits.put("Blackberries", "Purple");

    System.out.println("The Size of fruits Map is : " + fruits.size());
    fruits.forEach((k, v) -> System.out.println(k + " : " + v));
  }
}

輸出:

The Size of fruits Map is : 4
Guava : Green
Apple : Red
Blackberries : Purple
Banana : Yellow

本教程研究了 Java 在技術上不支援關聯陣列,但我們可以使用 HashMap 輕鬆實現它。

相關文章 - Java Array