如何更新ArrayList<HashMap<String, ?>>
?
数量为String
values.get(position).put(KEY_POSITION, quantity);
错误:
方法put(String,capture#11-of?)在类型中 HashMap不适用于参数 (String,String)
答案 0 :(得分:3)
所以问题与通配符的逻辑有关。通配符表示&#34;值类型参数可以是任何&#34;所以HashMap<String, ?>
有效但在此您无法将String值放入其中。
注意: HashMap<String, ?>
与HashMap<String, ? extends Object>
相同,因此 ?
可以是任何类型的类,但 String < / strong>不能是任何类型的课程。这是你错误的原因。
你需要做一些小改动:
HashMap<String, ? super String>
或者建议@ user902383直接将 1 (具有相同结果)改为:
HashMap<String, String>
现在它会接受字符串。
1 字符串类是最终的(你不能从中扩展) - 因此最好使用HashMap<String, String>
第一种方法{ {1}}&#34;无用&#34;因为你无法从String类扩展。
答案 1 :(得分:0)
问题是你正在使用通配符&#34;?&#34;。这基本上是一种未知类型。如果您需要更通用的类型,则应该使用String
类型,或Object
。像这样:
ArrayList<HashMap<String, String>>
您可以在此处详细了解:http://docs.oracle.com/javase/tutorial/extra/generics/wildcards.html 和这里: http://docs.oracle.com/javase/tutorial/extra/generics/morefun.html
希望它有所帮助。
祝你好运答案 2 :(得分:0)
这是代码;
ArrayList<HashMap<String,String>> hashArray=new
hashArray.get(index).remove("key");
hashArray.get(index).put("key","value");
确定
答案 3 :(得分:-1)
您可以尝试以&#34;数量&#34;。
的类型实现toString否则只是数量+&#34;&#34;