Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 一种类似于HashMap的数据结构,包含多个;独特的;价值_Java_Hashmap - Fatal编程技术网

Java 一种类似于HashMap的数据结构,包含多个;独特的;价值

Java 一种类似于HashMap的数据结构,包含多个;独特的;价值,java,hashmap,Java,Hashmap,是否有类似的数据结构存储一个键,并且与HashMap不同,它存储单个键的更多值?若否,有何建议??因为用相同的键和不同的值制作多个HashMap看起来并不整洁 编辑 当我说不止一个值时,我指的是不同的值。例如,考虑一个每个人都有钥匙的地图,我们希望存储个人姓名、地址和电话号码。 < P>检查!它允许您对同一个键有多个值 例子 使用HashMap,其中键可以是字符串,例如: Map<String, Person> personMap = new HashMap<String, P

是否有类似的数据结构存储一个键,并且与
HashMap
不同,它存储单个键的更多值?若否,有何建议??因为用相同的键和不同的值制作多个HashMap看起来并不整洁

编辑 当我说不止一个值时,我指的是不同的值。例如,考虑一个每个人都有钥匙的地图,我们希望存储个人姓名、地址和电话号码。

< P>检查!它允许您对同一个键有多个值

例子 使用
HashMap
,其中
键可以是
字符串,例如:

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

personMap.put("patrick_key", new Person("Patrick", "1000 Notre-Dame street", "123456789"));
personMap.put("stephan_key", new Person("Stephan", "2000 Notre-Dame street", "987654321"));

使用hashmap,每个“值”都是一个列表(根据需要链接或双重链接)

根据您的编辑,您可能仍希望为每个关键点存储一个值,但将该值设置为对象。比如说

public class PersonInfo {
     private String name;
     private String address;
     private String phoneNumber;
     etc...
}

并将映射定义为HashMap

一个简单的解决方案是创建某种形式的PersonInfo对象,然后将该值与键字符串一起映射。当您想要调用distinct键时,您只需检索包含您想要描述的关于此人的任何值的对象

如果你想让它们不同,你可以将每个电话号码记录在一个单独的列表中,用户输入号码时,你只需对照全局号码列表进行核对即可。
(地址/姓名可以使用两次,因为它们很常见,比如说,住在同一个家里的青少年和老年人)

你所说的不同价值是什么意思?为什么不直接使用
Person
对象呢?例如,只需制作一个简单的
HashMap
。我觉得HashMap看起来更容易访问,而且我想它一定会更快。这种情况如何,我们不知道一个人只有一个电话号码,可能有两个或更多的电话号码。或者可能有不止一个adr?家庭adr和工作adr以及其他可能的adr。那么,有没有办法使phone(或其中任何一个值)的实例数成为动态的呢?@17只需创建另一个构造函数,或者使用默认构造函数和setters。想象一下在运行时,我们知道他有多少个数字,然后我们想在HashMap中输入具体的数字。创建一个新类,将所有需要的值分组,怎么样?因为在OO编程中,在运行时单独存储属于同一概念ObjectMagine的值是没有意义的,所以我们知道他有多少个数字,然后我们想将特定的数字输入到HashMap@seventeen然后,您将使用字符串集合而不是单个字符串。不管您想在对象中包含多少信息,它仍然只是一个对象。@17在这种情况下,
PersonInfo
应该有一个
私人电话号码列表。
HashMap
不需要意识到这一点,这是一个人的财产,他们有零个或多个电话号码。
Map<String, Person> personMap = new HashMap<String, Person>();

personMap.put("patrick_key", new Person("Patrick", "1000 Notre-Dame street", "123456789"));
personMap.put("stephan_key", new Person("Stephan", "2000 Notre-Dame street", "987654321"));
Person person = personMap.get("patrick_key");
public class PersonInfo {
     private String name;
     private String address;
     private String phoneNumber;
     etc...
}