![](/img/trans.png)
[英]Compare HashMap<String, Double> and List<ArrayList<String>> in Java
[英]How to Assign ArrayList hashmap<String,Double[]> to List
我正在尝试将Double []的Hashmap值分配给List,但是它抛出错误:
“列表类型中的方法add(Double)不适用于参数(Double [])”
ArrayList<HashMap<String, Double[]>> arl = (ArrayList<HashMap<String, Double[]>>) pd.getArrayList();
List<Double> empid = new ArrayList<Double>();
Iterator itr = arl.iterator();
while (itr.hasNext()) {
HashMap<String, Double[]> map = (HashMap<String, Double[]>) itr.next();
empid.add(map.get("id")));
}
如何将Double[]
为Double.Request
?
如果仅转换为List<Double>
,请尝试以下操作:
ArrayList<HashMap<String, Double[]>> arl = (ArrayList<HashMap<String, Double[]>>) pd.getArrayList();
List<Double> empid = new ArrayList<Double>();
Iterator itr = arl.iterator();
while (itr.hasNext()) {
HashMap<String, Double[]> map = (HashMap<String, Double[]>) itr.next();
for (Double d : map.get("id") {
empid.add(d);
}
}
我认为您的问题比演职还大。 您有一个Doubles
数组,并且最终想要一个Double
。
这不是一个强制性的问题,而是如何操纵那些Doubles
给你一个Doubles
的问题。
也许您真正想要的是遍历该数组,然后将每个Double
依次添加到列表中。 但这确实是一个需求问题。
在您提供的代码中,您必须进行更改
List<Double> empid = new ArrayList<Double>();
通过
List<Double[]> empid = new ArrayList<Double[]>();
使其编译。 但是我想这不是您要实现的目标。 那是你想做什么? :
ArrayList<HashMap<String, Double[]>> arl = (ArrayList<HashMap<String, Double[]>>) pd.getArrayList();
List<Double> empid = new ArrayList<Double>();
Iterator itr = arl.iterator();
while (itr.hasNext()) {
HashMap<String, Double[]> map = (HashMap<String, Double[]>) itr.next();
empid.addAll(Arrays.asList(map.get("id")));
}
问题是map.get("id")
将返回Double[]
但empid
的类型为Double
。
你只是改变
List<Double> empid = new ArrayList<Double>();
至
List<Double[]> empid = new ArrayList<Double[]>();
您试图在元素为“单”双精度的列表中插入双精度类型的数组。
要将数组插入到empid列表中,您应该以这种方式声明它:
List<Double[]> empid = new ArrayList<Double[]>();
然后,当您在此列表上调用add时,可以传递Double []类型的参数。
您似乎正在看的是这一行:
empid.add(map.get("id")));
改为:
empid.addAll(Arrays.asList(map.get("id"))));
这将数组转换Double
到List
中Double
,和addAll
将增加从结果集合的所有项目的目标集合empid
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.