尝试使用字符串作为键在java中创建哈希表&;双重价值
在以下程序中:尝试使用字符串作为键在java中创建哈希表&;双重价值,java,string,double,hashtable,Java,String,Double,Hashtable,在以下程序中: import java.util.*; public class HashTableStringdouble { // private Hashtable<String, double[]> model = new Hashtable<String, double[]>();; private Hashtable<String, double> model = new Hashtable<String, double>
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[])
{
}
}
import java.util.*;
公共类HashTableStringdouble
{
//私有哈希表模型=新哈希表();;
private Hashtable model=new Hashtable();;//这不起作用
公共静态void main(字符串参数[])
{
}
}
有双[]行得通,但不是双。它给出了以下错误:
java:7:错误:意外类型
私有哈希表模型=新哈希表();;//这行不通
^
必填项:参考
发现:双
java:7:错误:意外类型
私有哈希表模型=新哈希表();;//这行不通
^
必填项:参考
发现:双
2个错误
我不确定我在这里做错了什么。请解释哈希表是如何工作的。您不能将原语用作哈希表中的键或值,您需要使用对象。例如,它将使用
Double
而不是Double
。它之所以能与double[]
一起工作,是因为数组是Java中的对象
此外,哈希表有些过时,在大多数情况下是首选的:
private Map<String, Double> model = new HashMap<String, Double>();
//or if you use Java 7+
private Map<String, Double> model = new HashMap<>();
private Map model=new HashMap();
//或者如果您使用Java7+
私有映射模型=新的HashMap();
尝试使用Double类而不是“原生”Double类
哈希表
;使用HashMap
Hashtable
是Java1.0遗留下来的,在Collections框架出现之前使用包装类。这就是为什么第一时间发明了计算机的原因之一
private Hashtable<String, Double> model = new Hashtable<String, Double>();
private Hashtable model=new Hashtable();
导入java.util.*;
公共类HashTableStringdouble
{
私有哈希表模型=新哈希表();
公共静态void main(字符串参数[])
{
}
}
Collection
s中使用基元类型<代码>集合s只能包含对象
类型的后代。如果您需要具有原语的集合,则应查看以下问题:HashMap
,而不是Hashtable
。如果确定需要同步的集合,请查看Collections.synchronizedMap()
。例如:
映射模型=Collections.synchronizedMap(新的HashMap())使用
Double
代替Double
。在泛型中,不允许使用原始数据类型,并且不要忘记标记您已接受的正确答案。欢迎来到stackoverflow。
如果使用的是双数组double[]
,则表示这是双数组object
(只有对象可以在泛型中出现)
当您使用
double
时,它意味着原始double您必须使用double
double
是基元类型。不允许在泛型中使用基元。请阅读:泛型不能接受Java中的原语值。(只是强调您试图做的不是特定于哈希表的HashTable
)@user714965如果我们使用double[]
?我们可以使用double[],但它应该是原始数据类型的数组对象。你为什么在问题的注释中问我?您似乎知道这一点。@user714965希望确保我们在同一页上。
import java.util.*;
public class HashTableStringdouble
{
private Hashtable<String, Double> model = new Hashtable<String, Double>();
public static void main(String args[])
{
}
}