Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.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 哈希映射中是否允许使用基元数组?_Java_Arrays_Dictionary_Hash_Hashmap - Fatal编程技术网

Java 哈希映射中是否允许使用基元数组?

Java 哈希映射中是否允许使用基元数组?,java,arrays,dictionary,hash,hashmap,Java,Arrays,Dictionary,Hash,Hashmap,我正在尝试用String键和String[]值制作一个HashMap。但是,当我调用put方法并尝试编译时,会出现以下错误: cannot find symbol - method put(java.lang.String,java.lang.String[]) 以下是相关代码: String[] options = { "Aside from you almost pulling my hair out, I think so.", "Who are

我正在尝试用
String
键和
String[]
值制作一个
HashMap
。但是,当我调用
put
方法并尝试编译时,会出现以下错误:

cannot find symbol - method put(java.lang.String,java.lang.String[])
以下是相关代码:

    String[] options = {
        "Aside from you almost pulling my hair out, I think so.",
        "Who are you?",
        "Why can't I see anything?"};
    options.put("Hey man, are you alright?", options); //Compile time error!  

这不应该起作用吗?

我认为您对map和string数组使用了相同的名称

你需要:

Map optionsMap = new HashMap<String, String[]>();
哈希映射中是否允许使用基元数组

是的,他们是被允许的。而且
java.lang.String[]
不是一个基本数组2。。。但这是允许的

问题是您正在调用
put
打开
options
,而
options
不是
HashMap
。这是一个数组

错误消息实际上报告
java.lang.String[]
没有
put
方法


1-也允许将数组用作
HashMap
键,但这是个坏主意。首先,数组上的
hashCode
equals
方法不会从
Object
重载,因此键查找将基于对象标识

2-基元数组是基元(非引用)类型的数组<代码>字符串是一种引用类型

这不管用吗

不!您正在对
字符串[]
对象调用
put()
方法

找不到符号-方法put(java.lang.String,java.lang.String[])

事实上,这正是Java试图告诉您xD的方式

下面的代码显示了如何将字符串数组正确存储到哈希映射中

Map<String, String[]> map = new HashMap<>();
String key = "Hey man, are you alright?";
String[] options = {
       "Aside from you almost pulling my hair out, I think so.",
       "Who are you?",
       "Why can't I see anything?"};
map.put(key, options);

System.out.println(Arrays.asList(map.get(key)));
Map Map=newhashmap();
String key=“嘿,伙计,你没事吧?”;
字符串[]选项={
“除了你差点把我的头发拔出来,我想是的。”,
“你是谁?”,
“为什么我什么都看不见?”;
map.put(键、选项);
System.out.println(Arrays.asList(map.get(key));

options.put()<代码>选项
是数组!
HashMap
在哪里?那么你是如何声明的呢?@songyuanyao O_O我也将HashMap命名为“选项”!好的,现在它工作了。老兄,我现在觉得自己太傻了。我已经花了好几个小时研究了这个代码,却没有注意到XP
Map<String, String[]> map = new HashMap<>();
String key = "Hey man, are you alright?";
String[] options = {
       "Aside from you almost pulling my hair out, I think so.",
       "Who are you?",
       "Why can't I see anything?"};
map.put(key, options);

System.out.println(Arrays.asList(map.get(key)));