我尝试使用HashMap
键和String
值制作String[]
。但是当我调用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!
不应该这样做吗?
答案 0 :(得分:1)
我认为您对地图和字符串数组使用相同的名称。
你需要:
Map optionsMap = new HashMap<String, String[]>();
然后
String[] options = {
"Aside from you almost pulling my hair out, I think so.",
"Who are you?",
"Why can't I see anything?"};
optionsMap.put( "Hey man, are you alright?", options );
答案 1 :(得分:1)
HashMaps中是否允许使用原始数组?
是的,他们被允许 1 。并且java.lang.String[]
不是原始数组 2 ...但无论如何它都是允许的。
问题是您在put
上呼叫options
,而options
不是HashMap
。这是一个阵列!
该错误消息实际上是报告java.lang.String[]
没有put
方法。
1 - 允许使用数组作为HashMap
键,但这是一个坏主意。首先,数组上的hashCode
和equals
方法不会从Object
重载,因此键查找将基于对象标识。
2 - 基本数组是基元(非引用)类型的数组。 String
是参考类型。
答案 2 :(得分:0)
不应该这样做吗?
都能跟得上!您正在put()
对象上调用String[]
方法。
找不到符号 - 方法put(java.lang.String,java.lang.String [])
事实上,这正是Java试图告诉你xD
的方式下面的代码显示了如何将String数组正确存储到哈希映射中。
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)));