2017-02-23 90 views
-1

我試圖創建一個數組條目< K,V>元素。有了這段代碼,我得到了java.lang.ClassCastException。我怎樣才能解決這個問題?java.lang.ClassCastException Object to HashTable.Entry

public class HashTable<K, V> { 
    private final int INITIAL_SIZE = 128; 
    private Entry<K, V>[] table; 

    public HashTable() { 
     table = (Entry<K,V>[]) new Object[INITIAL_SIZE]; 
    } 

    static class Entry<K, V> { 
     // Here comes constructor and other stuff 
    } 
} 
+0

您無法從對象數組創建映射。 – Nicolas

+0

@Nicolas我想創建一個數組,我將在那裏存儲條目。這是不可能的嗎? – tarexme

+0

那麼你可以這樣做'List > list = new ArrayList <>()' – Nicolas

回答

0

試試這個:

table = (Entry<K, V>[]) new Map.Entry[INITIAL_SIZE]; 
+0

所以這裏正確的解決方案是 table =(Entry [])new Entry [INITIAL_SIZE] – tarexme

0

當然你也可以創建自己的Array或進入Abhilekh辛格和薩科列表顯示你如何做到這一點。

但是對於典型的用例,java已經有了這樣一個Class。它是java.util.Map(即通用接口),最常用的實現方式是java.util.HashMap

您可以使用put(key, value)向該地圖添加條目,並且可以使用entrySet獲取Set>。