首頁 > Java > java教程 > 如何在 HashMap 中儲存具有相同鍵的多個值?

如何在 HashMap 中儲存具有相同鍵的多個值?

Mary-Kate Olsen
發布: 2024-12-09 02:01:09
原創
437 人瀏覽過

How to Store Multiple Values with the Same Key in a HashMap?

建立每個鍵有多個值的HashMap

在某些情況下,可能需要在HashMap 中儲存具有相同鍵的多個值。儘管 Java 的 HashMap 本身並不支援此功能,但有幾種替代方法可以實現此功能。

1.以列表作為值的對應

一個選項是建立一個 HashMap,其中值是清單。這允許多個值與單一鍵關聯。例如:

Map<String, List<Person>> peopleByForename = new HashMap<>();
登入後複製

2。包裝類別

另一種方法是定義一個保存多個值的包裝類別。然後,這個包裝器可以用作 HashMap 中的值:

class Wrapper {
    private Person person1;
    private Person person2;

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

    // Getter methods
}

Map<String, Wrapper> peopleByForename = new HashMap<>();
登入後複製

3。元組

如果您的程式語言支援元組,您可以將它們用作 HashMap 中的鍵或值。例如:

Map<String, Tuple2<Person, Person>> peopleByForename = new HashMap<>();
登入後複製

4。多個映射

最後,另一個策略是為每個值類型使用單獨的映射:

Map<String, Person> firstPersonByForename = new HashMap<>();
Map<String, Person> secondPersonByForename = new HashMap<>();
登入後複製

範例

考慮範例具有userId、clientID 和的HashMap的場景timeStamp:

選項1:以列表為值的對應

Map<Integer, List<Pair<String, Long>>> data = new HashMap<>();

data.put(1, Arrays.asList(new Pair<>("client-1", System.currentTimeMillis())));
data.put(1, Arrays.asList(new Pair<>("client-2", System.currentTimeMillis())));
登入後複製

選項2:包裝類別

class Data {
    private Integer userId;
    private String clientID;
    private Long timeStamp;

    public Data(Integer userId, String clientID, Long timeStamp) {
        this.userId = userId;
        this.clientID = clientID;
        this.timeStamp = timeStamp;
    }
}

Map<Integer, Data> data = new HashMap<>();

data.put(1, new Data(1, "client-1", System.currentTimeMillis()));
data.put(1, new Data(1, "client-2", System.currentTimeMillis()));
登入後複製

方法的選擇取決於您的應用程式的特定要求和所使用的程式語言。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板