实现同一个键有多个值的 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中文网其他相关文章!