在以下程序中:
import java.util.*;
public class HashTableStringdouble
{
// private Hashtable<String, double[]> model = new Hashtable<String, double[]>();;
private Hashtable<String, double> model = new Hashtable<String, double>();; // this does not work
public static void main(String args[])
{
}
}
有双[]但不是双倍。它给出了以下错误:
HashTableStringdouble.java:7:错误:意外类型 private Hashtable model = new Hashtable();; //这不起作用 ^ 要求:参考 发现:双倍 HashTableStringdouble.java:7:错误:意外类型 private Hashtable model = new Hashtable();; //这不起作用 ^ 要求:参考 发现:双倍 2个错误
我不确定我在这里做错了什么。请解释一下Hashtable的工作原理。
答案 0 :(得分:11)
您不能将基元用作Hashtable中的键或值,您需要使用对象。例如,它可以与Double
而不是double
一起使用。它与double[]
一起使用的原因是数组是Java中的对象。
此外,Hashtable有点过时,在大多数情况下首选HashMap:
private Map<String, Double> model = new HashMap<String, Double>();
//or if you use Java 7+
private Map<String, Double> model = new HashMap<>();
答案 1 :(得分:6)
Hashtable
;使用HashMap
。在集合框架时代之前,Hashtable
是Java 1.0的遗留物。答案 2 :(得分:4)
尝试使用Double类而不是“native”double
答案 3 :(得分:2)
您无法在Collection
中使用原始类型。 Collection
只能包含Object
类型的后代。如果您需要包含基元的集合,则应该查看以下问题:Most efficient Java primitive collections library。
使用HashMap
,而不是Hashtable
。如果您确定需要同步集合,请查看Collections.synchronizedMap()
。 E.g:
Map model = Collections.synchronizedMap(new HashMap());
答案 4 :(得分:1)
使用包装类。这就是为什么首先发明它的原因之一。
private Hashtable<String, Double> model = new Hashtable<String, Double>();
答案 5 :(得分:1)
import java.util.*;
public class HashTableStringdouble
{
private Hashtable<String, Double> model = new Hashtable<String, Double>();
public static void main(String args[])
{
}
}
答案 6 :(得分:1)
使用Double
代替double
。在通用原始数据类型中是不允许的,并且不要忘记标记您已接受的正确答案。欢迎来到stackoverflow。
如果你使用double[]
那么这意味着这是双数组object
(只有对象可以在泛型中存在)
当你使用double
时,它意味着原始的双重