idea提示Collection.set没有参数的问题-Error:(18, 12) java: 类型collection.Set不带有参数

idea提示集合类型没有参数

在练习集合的时候,使用在idea中遇到了这样一个问题


package collection;
import java.util.*;

public class GetMap {
}
class MapDemo2
{
    public static void main(String[] args)
    {
        Map<String,String> map = new HashMap<String,String>();

        map.put("01","diyi");
        map.put("02","dier");
        map.put("03","disan");
        map.put("04","disi");

        Set<Map.Entry<String,String>> entrySet = map.entrySet();
        //提示Error:(18, 12) java: 类型collection.Set不带有参数

        Iterator<Map.Entry<String,String>> it = entrySet.iterator();

        while(it.hasNext())
        {
            Map.Entry<String,String> me = it.next();
            String key = me.getKey();
            String value = me.getValue();

            System.out.println(key+":"+value);

        }

    }
}

如代码所示,idea提示错误,说Error:(18, 12) java: 类型collection.Set不带有参数

一次我就在Windows命令行和eclipse中分别测试了相同的代码,结果均没有错误。开始以为是idea引入的jdk版本问题后来发现并不是,Windows命令行和eclipse以及idea用的都是jdk10.0.2

后来发现了问题:

后来找了很久才发现了问题,出现这样的问题显然是运行环境识别错误了Set类,它没有将此处的Set认定为java.Util.Set,而是认成了其他地方的Set,果然,我在相同的Collection包中发现了自定义的一个Set类(因为这个包中定义的类太多,开始没有发现)

解决办法呢,就是显示的指明引用,不要用java.util.*; 而是用java.util.Set;这样运行环境会优先寻找设个Set,就不会找错了。


package collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import java.util.Map;

public class GetMap {
}
class MapDemo2
{
    public static void main(String[] args)
    {
        Map<String,String> map = new HashMap<String,String>();

        map.put("01","diyi");
        map.put("02","dier");
        map.put("03","disan");
        map.put("04","disi");

        Set<Map.Entry<String,String>> entrySet = map.entrySet();
        //不再提示错误

        Iterator<Map.Entry<String,String>> it = entrySet.iterator();

        while(it.hasNext())
        {
            Map.Entry<String,String> me = it.next();
            String key = me.getKey();
            String value = me.getValue();

            System.out.println(key+":"+value);

        }

    }
}

总结:1.引入包是尽量单点引入,这样编译更快,而且不容易类名起冲突

           2.自定义名字的时候一定不要嫌麻烦,尽量定义较长的别致的有意义的名字,不要和已有的类名相同。

 

             

猜你喜欢

转载自blog.csdn.net/whscheetah/article/details/84923963