2014-02-13 29 views
0

我是Java中的新生。我學會了哈希表可能會幫助我解決問題。我們可以創建一對(a,b)作爲Java中的哈希表的值:

我想創建一個哈希表,使得它的每一個條目是一個鍵值對的

<Float, (a,b) > 

而且每個條目包含了許多對的鏈表,我怎麼能寫代碼來實現呢?

+0

因此,用鏈式哈希存儲元組?你被允許使用標準的Java庫嗎? – xlm

+0

元組是Java庫中的數據結構嗎? – i3wangyi

+0

不,創建一個類似'Pair'的類或使用'Point'或類似的現有類(哪一個取決於你需要什麼)。 – xlm

回答

1

您可以使用Point來表示一對點,或者也可以使用2個int或double條目表示您自己的類。使用自己的類來包裝和保存這兩個值的優點是,它可以像您的需求一樣簡單和具體。無論如何,這些將是你在HashTable中的值。

+1

謝謝。我沒有想過這個 – i3wangyi

0

HashMap中的值條目可以是任何對象和一個LinkedList是一個對象,以便

HashMap<typeofkey,LinkedListy<Typeofvalueobject> map = new HashMap<>(); 

只是approbiate類型

0

更換typeofkey和typeofvalue的對象將是如下:

HashTable<Object,LinkedList<Object>> obj = new HashTable<Object,LinkedList<Object>>(); 

並添加該元素只需使用put方法。

+0

你應該避免使用'Hashtable'類。相反,使用由'HashMap'支持的'Map'。 –

+0

Offcource @LuiggiMendoza但OP想要HashTable。 – Kick

+0

這並不意味着你*應該*用'Hashtable'回答(注意沒有'HashTable'類,檢查T)。這與向Array人展示如何在使用'ArrayList'後面的'List'時使用'Vector'類似。更多信息:http://stackoverflow.com/q/1386275/1065197 –

1

首先,創建一個Pair類:

//A and B are generics 
class Pair<A, B> { 
    private A element1; 
    private B element2; 
    public Pair(A element1, B element2) { 
     this.element1 = element1; 
     this.element2 = element2; 
    } 
    //public getters... 
} 

其次,有一個Map<Float, List<Pair<A, B>>>您插入鍵/值:

Map<Float, List<Pair<A, B>>> table = new HashMap<Float, List<Pair<A, B>>>(); 

三,創建List<Pair<A, B>>背靠LinkedList<Pair<A, B>>

List<Pair<A, B>> myList = new LinkedList<Pair<A, B>>(); 

四,將你的列表添加到到你的地圖。

table.put(1, myList); 

你不應該直接使用LinkedList也不HashMap類,而不是嘗試code oriented to interfaces。此外,我建議您使用另一個密鑰,而不是FloatDouble,因爲它們的值可能會因floating point comparison而有所不同。我會推薦Integer,Long,StringBigDecimal而不是Float

+0

非常感謝! – i3wangyi

+0

不客氣。 –

相關問題