我现在要用到一个数据结构 HashMap<key1, value1>,而这个value又是一个HashMap<key2, value2>,而value2又是一个List,现在我想value1是不是应该再定义一个类型比如:class XXXXX extends HashMap{
}而value2又定义一个class YYYYY extends HashMap{
}但是类里面什么也没有,看起来很怪。这种情况应该怎么去写呢?

解决方案 »

  1.   

    HashMap的key和value都可以是HashMap啊。
    HashMap<HashMap<Integer, String>, HashMap<Integer, String>> map = 
    new HashMap<HashMap<Integer, String>, HashMap<Integer, String>>();
      

  2.   

    哎,开明白了,楼主是问value1和value2是不是需要建新类型才能用。
    没必要的,value1和value2这两个参数是Object类型的,而所有类型都是继承Object的,所以这里可以使用任意类型,自然可以直接使用HashMap和List。
      

  3.   

    没必要自己弄个数据结构
    Map<Object, HashMap<Object, List<Object>>>  map = new HashMap<Object, HashMap<Object, List<Object>>>();如果操作比较多的话,可以写个操作类用来简化操作时代码的重复
      

  4.   

    不是,我的意思是如果不创建新类的话,写的代码非常难懂,一大堆get什么的,写的谁也看不懂了。而创建新的类的话,看起来又太奇怪了。
      

  5.   

    如果你这个hashMap的value很清晰,简洁,或者是临时生成,那就不需要拉
    如果有很多元素,那就写个pojo类吧
    按照你给的,难道这2个value都没有元素的?
      

  6.   

    直接用HashMap就可以,不用继承的.
      

  7.   

    那你的问题可能和我上次比较相似,但不是像你这样继承封装的,value1可以用这样一类来代替:
    public class Value1 {
        private HashMap<String,Value2>();
    }
    然后value2:
    public class Value2 {
        private List<String> list;
    }
    get与set方法我省略了,当时我封装了像Value2这样一个类的原因是为了解决Struts2在jsp页面上迭代List<List<Object>>这样一个类型不能迭代,只能把List<Object>封装在自己的MyObj里变成迭代List<MyObj>