2010-04-02 93 views
1

我有問題,我想開發一個關於擴展hashmap的程序來添加putchildren方法.. 我寫了主類,但現在我想寫putChildrenValue方法.. 我的問題是: 我需要使用3個參數實現putChildrenValue方法,String key,String key,ObjectValue。它將相應地存儲上述系統。擴展HashMap以添加putChildren方法

當我完成了這個方法,當你完成該方法的數據

Key1 = "RUBY" value=HashMap which has -> "key2" = 5248 && "VALUE" = German 
Key1 = "PYTHON" value=HashMap which has -> "key2" = 1234 && -> "VALUE" = German 

我的主類是:

public static void main(String [] args) 
{ 
    ExtendedHashMap extendedMap = new ExtendedHashMap(); 
    extendedMap.put (「Row1」, 「Column1」, 「German」); 
    extendedMap.put (「Row1」, 「Column2」, 「English」); 
    extendedMap.put (「Row1」, 「Column3」, 「Spanish」); 
    extendedMap.put (「Row2」, 「Column1」, 「Ruby」); 
    extendedMap.put (「Row2」, 「Column2」, 「Python」); 
    extendedMap.put (「Row3」, 「Column3」, 「Java」); 
} 

誰能幫助我?

+1

你有沒有ExtendedHashMap的任何代碼呢?你有沒有被告知它必須是HashMap,還是你的選擇?似乎還有其他數據結構可能更適合您正在嘗試做的事情。 – DaveJohnston 2010-04-02 09:01:30

+0

兒童的概念對「地圖」沒有意義。你在建樹嗎?如果是這樣,考慮組成而不是繼承。 – polygenelubricants 2010-04-02 09:31:30

回答

4

這可能是這樣的:

import java.util.HashMap; 

public class ExtHashMap<K1, K2, V> extends HashMap<K1, HashMap<K2, V>> { 

    public ExtHashMap() { 
    super(); 
    } 

    public void putChildrenValue(K1 key1, K2 key2, V value) { 

    HashMap<K2, V> childMap = get(key2); 
     if (childMap == null) { 
     childMap = new HashMap<K2, V>(); 
     put(key1, childMap); 
     } 
     childMap.put(key2, value); 
    } 
    } 
} 

下面的代碼片段給出瞭如何創建和使用它的一個例子:

ExtHashMap<String, int, String> map = new ExtHashMap<String, int, String>(); 
map.putChildValue("RUBY", 1234, "VALUE1"); 
map.putChildValue("PYTHON", 4321, "VALUE2"); 

的childmaps被自動創建的需求。