尝试在java中使用string作为键和&创建哈希表。价值加倍

时间:2013-03-14 11:24:42

标签: 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>();;                // 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的工作原理。

7 个答案:

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

  1. 不要使用Hashtable;使用HashMap。在集合框架时代之前,Hashtable是Java 1.0的遗留物。
  2. 这不是关于地图如何在Java中工作,而是关于Java如何工作。您无法在任何地方用基本类型替换引用类型。

答案 2 :(得分:4)

尝试使用Double类而不是“native”double

答案 3 :(得分:2)

  1. 您无法在Collection中使用原始类型。 Collection只能包含Object类型的后代。如果您需要包含基元的集合,则应该查看以下问题:Most efficient Java primitive collections library

  2. 使用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时,它意味着原始的双重