簡體   English   中英

嘗試使用string作為鍵和double作為值在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<>();
  1. 不要使用Hashtable ; 使用HashMap 在集合框架時代之前, Hashtable是Java 1.0的遺留物。
  2. 這不是關於地圖如何在Java中工作,而是關於Java如何工作。 您不能在任何地方用基本類型替換引用類型。

嘗試使用Double類而不是“native”double

  1. 您不能在Collection使用原始類型。 Collection s只能包含Object類型的后代。 如果您需要具有基元的集合,您應該看看這個問題: 最有效的Java原始集合庫

  2. 使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM