HashMap<String> map = new HashMap();
这样 报错
HashMap<String,String> map = new HashMap();
这样就不报错 为什么呢?

解决方案 »

  1.   

    HashMap类继承自Map接口,声明了两个参数类型K, V,分别为散列表键和值的类型
    在创建泛型类对象时,或者不提供参数类型,或者必须提供所有参数类型
      

  2.   

     Map 需要两种值,一种是键值,一种是键所对应的值,所以Map的泛型是Map<T t, U u>
      

  3.   

    第一行代码,你只给了key的类型,没有给value的类型编译器不知道value对应什么类型不敢给你编译
    第二行代码,编译器知道了key和value都是String,就敢放心大胆的给你编译了
      

  4.   

    编译器当然会检查你这个类声明的泛型啊,Map类声明上是K, V两个泛型,你就写一个,编译器检查到了,自然是报错了。
      

  5.   

    Map类声明有两个参数啊,一个key另外一个value,给一个是不行的。
      

  6.   

    首先 你要知道 Map 是用来干嘛的 ,才知道什么时候用他
     Map 是 一个 把 键(key)映射到 值 (value) 的对象 。从这句话就可以看出来 ,是需要两个对象作为参数的 。
     
    其次 ,<> 中的内容是代表了什么意思呢 ,<> 是 泛型的写法,
    <K,V> 中 的 K 是用于指定 map 中  键(Key ) 的 泛型类型,
                        V 是用于指定 map 中 值(Value)的泛型类型,
    要么你可以不指定泛型类型 ,如果指定了就必须要都指定。
    接口的定义 如下 : 
    public interface Map<K,V> 
      

  7.   

    map定义是两口子,需要一男一女,光有男或是女,当然报错了。