![](/img/trans.png)
[英]find key with highest value in HashMap<String,Double> using lambdaj (java)
[英]Trying to create a hash table in java using string as key & double as value
在以下程序中:
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();; //这不起作用^ required:reference found:double HashTableStringdouble.java:7:error:unexpected type private Hashtable model = new Hashtable();; //这不起作用^必需:引用找到:double 2错误
我不确定我在这里做错了什么。 请解释一下Hashtable的工作原理。
您不能将原语用作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<>();
Hashtable
; 使用HashMap
。 在集合框架时代之前, Hashtable
是Java 1.0的遗留物。 尝试使用Double类而不是“native”double
您不能在Collection
使用原始类型。 Collection
s只能包含Object
类型的后代。 如果您需要具有基元的集合,您应该看看这个问题: 最有效的Java原始集合库 。
使用HashMap
,而不是Hashtable
。 如果您确定需要同步集合,请查看Collections.synchronizedMap()
。 例如:
Map model = Collections.synchronizedMap(new HashMap());
使用包装类。 这就是为什么首先发明它的原因之一。
private Hashtable<String, Double> model = new Hashtable<String, Double>();
import java.util.*;
public class HashTableStringdouble
{
private Hashtable<String, Double> model = new Hashtable<String, Double>();
public static void main(String args[])
{
}
}
使用Double
而不是double
。 在通用原始数据类型中是不允许的
并且不要忘记标记您已接受的正确答案。 欢迎来到stackoverflow。 如果你使用double[]
那么这意味着这是双数组object
(只有对象可以存在于泛型中),当你使用double
它意味着原始的double
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.