首页 >Java >java教程 >如何实现 HashMap 来存储同一个键的多个值?

如何实现 HashMap 来存储同一个键的多个值?

Patricia Arquette
Patricia Arquette原创
2024-12-09 06:51:10626浏览

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