2010-04-02 90 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被自动创建的需求。