List与ArrayList

List<Sting> list =new ArrayList<>();
和List<Sting> list =new ArrayList<String>();
两者有何区别?

元芳怎么了
浏览 444回答 4
4回答

慕哥9229398

没啥区别。。数据类型的指定是在List<String>时候进行的。JDK 1.7 的特性里增加了对类型推断的支持。增强的对通用实例创建(diamond)的类型推断&nbsp;&nbsp;类型推断是一个特殊的烦恼,下面的代码:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map<String,&nbsp;List<String>>&nbsp;anagrams&nbsp;=&nbsp;new&nbsp;HashMap<String,&nbsp;List<String>>();&nbsp; &nbsp;&nbsp;通过类型推断后变成:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map<String,&nbsp;List<String>>&nbsp;anagrams&nbsp;=&nbsp;new&nbsp;HashMap<>();&nbsp; &nbsp;&nbsp;这个<>被叫做diamond(钻石)运算符,这个运算符从引用的声明中推断类型。

慕码人2483693

没有区别, jdk1.7开始可以省略右边尖括号内的String。(通过声明内的泛型来推测右边, 所以就不需要了。)

收到一只叮咚

如果是你表达的List<Sting> list =new ArrayList<>();List<Sting> list =new ArrayList<String>();这两个没啥区别,上面一个ArrayList同样会自动转换成String的泛型,list可存取的数据类型只能是String类型。而如果你的第一行代码改成List list = new ArrayList();这样就有很大的区别,list存取的数据类型是没有固定的,你可以存取String,Integer甚至Object类型。

蓝山帝景

第一个在jdk1.7之后才行,否则编译错误,后一个在1.7之前的写法,当然,1.7之后也可以这么写
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java