K 和V可以当做一个“类型占位符”,表示某个不确定的类型,真正用的时候,需要将K、V的类型给定,是String、Integer或者其它明确的类型。可以看看List的源码,看看它的T,再对比一个具体的List<String>案例,思考下它进入到某个特定方法时的场景。

解决方案 »

  1.   

    存储要根据实际明确的需求
    不能什么都往里面存储
    针对的你的情况,value要进一步拆分
      

  2.   

                    Map< String, Map<String,List<?>> > storage = new HashMap<String, Map<String,List<?>>>();
    Map<String,List<?>> value = new HashMap<String, List<?>>();
    List<Object> list = new ArrayList<Object>();   
    list.add("a");
    list.add(1);
    value.put("key", list);
    storage.put("test", value);     这样没问题,仔细 体会一下
      

  3.   


    这样没问题,但是无意义。最小单元(list)里存的类型不定,用的时候容易发生类型错误,还不如针对具体类型设置不同的存储容器(多个存储容器)
      

  4.   

     Map<String,List >  
      

  5.   


    意义是有的 !
    比如,我要存储的数据室 ? ,但是?可能是多个的,而不是单一的,所以是List<?> ,
    此时,List<?>是需要索引的,所以我定义了map<String,List<?>> , 我称它为 infoMap 。而与此同时,如果我有多个不同性质的数据,但是这些数据要存储的信息恰好是infoMap ,
    比如 <学校,院系<院系id,List<学生>> >
    所以我定义了一个map<String,infoMap> ,也就是map<String , map<String , List<?>>>
      

  6.   

    遇到"Map< String, Map<String,List<?>> >"这种坑爹的代码,我只能说:你设计错了。