【问题标题】:Extend HashMap to add putChildren method扩展 HashMap 以添加 putChildren 方法
【发布时间】:2010-04-02 08:58:22
【问题描述】:

我有一个问题,我想开发一个关于扩展 hashmap 以添加 putchildren 方法的程序.. 我写了主类,但现在我想写 putChildrenValue 方法.. 我的问题是: 我需要实现一个 putChildrenValue 方法,它有 3 个参数,String key,String key,ObjectValue。它将相应地存储上述系统。

当我完成这个方法当你完成方法数据时

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”);
}

谁能帮帮我?

【问题讨论】:

  • 你有ExtendedHashMap的代码吗?你有没有被告知它必须是 Hashmap,或者那是你的选择?似乎还有其他数据结构可能更适合您正在尝试做的事情。
  • 儿童的概念对于Map 来说没有意义。你在造树吗?如果是这样,请考虑组合而不是继承。

标签: java hashmap


【解决方案1】:

可能是这样的:

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);
    }
  }
}

下面的sn-p给出了如何创建和使用的例子:

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

子地图是按需自动创建的。

【讨论】:

    猜你喜欢
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    相关资源
    最近更新 更多