2011-09-02 55 views
1

我想在Java程序中創建一個Hashtable。 Hashtable必須有多個字段(現在我想存儲從DB讀取的3列)。如何將多個列存儲爲Hashtable存儲鍵值對。我想保留第一列作爲關鍵字,第三列作爲值。請幫忙!! 謝謝!HashTable中的多個字段

回答

0

您可以將您的值設置爲包含要存儲的與該關鍵字關聯的3個值的對象。

+0

但我希望鑰匙是前兩列! –

+0

那麼,那麼做一個複合對象。或者,如果Key1和Key2之間存在1-n關係,則還可以使用Key2創建第二個散列表並將其存儲爲HashTable1(帶有Key1)的值。這取決於你打算如何看待事物。如果您將Key設置爲自定義對象,請確保您實施了適當的Hashcode。 – chrisaut

2

首先,你需要一個新的類,它可以存儲值:

public class Values { 
    public final String foo; 
    public final Long bar; 
    public final Long foobar; 

    public Values(final String foo, final Long bar, final Long foobar) { 
    this.foo = foo; 
    this.bar = bar; 
    this.foobar = foobar; 
    } 
} 

比你可以創建你Hashtable(你真的需要線程安全的?)是這樣的:

final Map<String, Values> container = new Hashtable<String, Values>(); 

如果你不需要線程安全,你可以用HashMap代替。

0

哈希表中的值(concurrenthashmap在大多數場景中是一個更好的選擇)可以是任何對象(甚至是db實體;所以你可以自由地將hashtable的值包裝爲你想要的任何對象)。

0

你是什麼意思:「該Hashtable必須有多個字段(現在我想存儲3列,我從DB中讀取)」。

HashTable可以具有鍵值對,鍵應該是唯一的,因此表中唯一且不爲空的任何列,例如主鍵可以用作哈希表中的鍵,相應的值可以是任何值你想要存儲,它可以只是第3列中的值,或者你可以製作一個複合對象來休息所有字段,並將該對象作爲值與主鍵相對應。

如果您沒有線程安全問題,請使用HashMap以獲得更好的性能。

+0

前2列將作爲Hashtable的關鍵字段。這兩列中的值將一起決定Hashtable的值字段中的列值。 我需要線程安全,因此我使用Hashtable。 –

+0

好吧,然後製作前兩列的複合對象和相應的值,您可以使其中的另一個複合對象作爲值使用。 – Swagatika

0

您可以創建一個HashTable,其中第一列將用於Key,第二列將包含Vector或數組或類。這就是你將如何創建一個不同列的哈希表