實作同一個鍵有多值的 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中文網其他相關文章!