更新ArrayList <hashmap <string,?=“”>&gt; </hashmap <string,>

时间:2014-04-16 10:44:43

标签: java android arraylist hashmap

如何更新ArrayList<HashMap<String, ?>>? 数量为String

values.get(position).put(KEY_POSITION, quantity);

错误:

  

方法put(String,capture#11-of?)在类型中   HashMap不适用于参数   (String,String)

4 个答案:

答案 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;