我是Java中的新生。我學會了哈希表可能會幫助我解決問題。我們可以創建一對(a,b)作爲Java中的哈希表的值:
我想創建一個哈希表,使得它的每一個條目是一個鍵值對的
<Float, (a,b) >
而且每個條目包含了許多對的鏈表,我怎麼能寫代碼來實現呢?
我是Java中的新生。我學會了哈希表可能會幫助我解決問題。我們可以創建一對(a,b)作爲Java中的哈希表的值:
我想創建一個哈希表,使得它的每一個條目是一個鍵值對的
<Float, (a,b) >
而且每個條目包含了許多對的鏈表,我怎麼能寫代碼來實現呢?
您可以使用Point
來表示一對點,或者也可以使用2個int或double條目表示您自己的類。使用自己的類來包裝和保存這兩個值的優點是,它可以像您的需求一樣簡單和具體。無論如何,這些將是你在HashTable中的值。
謝謝。我沒有想過這個 – i3wangyi
HashMap中的值條目可以是任何對象和一個LinkedList是一個對象,以便
HashMap<typeofkey,LinkedListy<Typeofvalueobject> map = new HashMap<>();
只是approbiate類型
更換typeofkey和typeofvalue的對象將是如下:
HashTable<Object,LinkedList<Object>> obj = new HashTable<Object,LinkedList<Object>>();
並添加該元素只需使用put
方法。
你應該避免使用'Hashtable'類。相反,使用由'HashMap'支持的'Map'。 –
Offcource @LuiggiMendoza但OP想要HashTable。 – Kick
這並不意味着你*應該*用'Hashtable'回答(注意沒有'HashTable'類,檢查T)。這與向Array人展示如何在使用'ArrayList'後面的'List'時使用'Vector'類似。更多信息:http://stackoverflow.com/q/1386275/1065197 –
首先,創建一個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。此外,我建議您使用另一個密鑰,而不是Float
或Double
,因爲它們的值可能會因floating point comparison而有所不同。我會推薦Integer
,Long
,String
或BigDecimal
而不是Float
。
非常感謝! – i3wangyi
不客氣。 –
因此,用鏈式哈希存儲元組?你被允許使用標準的Java庫嗎? – xlm
元組是Java庫中的數據結構嗎? – i3wangyi
不,創建一個類似'Pair'的類或使用'Point'或類似的現有類(哪一個取決於你需要什麼)。 – xlm