首頁 >Java >java教程 >如何實作 HashMap 來儲存同一個鍵的多個值?

如何實作 HashMap 來儲存同一個鍵的多個值?

Patricia Arquette
Patricia Arquette原創
2024-12-09 06:51:10627瀏覽

How Can I Implement a HashMap to Store Multiple Values for the Same Key?

實作同一個鍵有多值的 HashMap

HashMap 是將鍵對應到值的資料結構。預設情況下,每個鍵只能有一個關聯值。但是,可以實作允許一個鍵具有多個值的 HashMap。

實作多個值的選項:

1.以清單為值的對應
Map>

使用值為清單的對應。這允許您在單一鍵下儲存多個值。缺點是列表可以包含多於或少於兩個值。

2.自訂包裝類別
Map

建立包含多個數值的包裝類別。這使值綁定到單一實體並提供封裝。但是,它需要編寫額外的程式碼來建立和管理包裝類別。

3.元組類:
Map>

使用元組類(如果您的程式語言可用)來儲存多個值。這提供了一種簡單且類型安全的方式來表示它們。

4.多Map
Map
Map

使用多個Map來儲存不同的值。雖然很方便,但如果地圖不同步,可能會導致值斷開和維護問題。

範例

使用有清單的地圖作為值

Map<String, List<Person>> peopleByForename = new HashMap<>();

List<Person> bobs = new ArrayList<>();
bobs.add(new Person("Bob Smith"));
bobs.add(new Person("Bob Jones"));
peopleByForename.put("Bob", bobs);

使用自訂包裝器類:

class Wrapper {
    public Person person1;
    public Person person2;

    public Wrapper(Person person1, Person person2) {
        this.person1 = person1;
        this.person2 = person2;
    }
}

Map<String, Wrapper> peopleByForename = new HashMap<>();

peopleByForename.put("Bob", new Wrapper(new Person("Bob Smith"), new Person("Bob Jones")));

使用元組類:

// Assumes a Tuple2 class is available
Map<String, Tuple2<Person, Person>> peopleByForename = new HashMap<>();

peopleByForename.put("Bob", Tuple2.create(new Person("Bob Smith"), new Person("Bob Jones")));

使用多個映射:

Map<String, Person> firstPersonByForename = new HashMap<>();
Map<String, Person> secondPersonByForename = new HashMap<>();

firstPersonByForename.put("Bob", new Person("Bob Smith"));
secondPersonByForename.put("Bob", new Person("Bob Jones"));

在選擇最佳選項之前,請考慮每種方法的優點和缺點您的特定用例。

以上是如何實作 HashMap 來儲存同一個鍵的多個值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn