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)));