发布日期:2018-03-26
用一行代码初始化ArrayList+ 查看更多
用一行代码初始化ArrayList
+ 查看更多
发布日期:2018-03-10 14:21
分类:JAVA
浏览次数:126
举个例子,首先我执行下面这几行代码
ArrayListplaces = new ArrayList (); places.add("Buenos Aires"); places.add("Córdoba"); places.add("La Plata");
然后我将代码重构如下:
如果项目Project Coin的Collection Literals提案被Java标准接受(它预定会被加入到Java 7中,但也很有可能在java 8被移除)那么还有这种写法。
ArrayListplaces = new ArrayList ( Arrays.asList("Buenos Aires", "Córdoba", "La Plata"));
还有什么更好的方法做这件事吗?
回答
你写的方法很可能就是初始化ArrayList的最好方法,因为它不需要再创建一个新的List:
ArrayList像这个缺点就是必须写太多次链表引用了。也有一些替代方法,比如使用一个实例初始化器(也称为“双括号初始化”)创建一个匿名内部类:list = new ArrayList (); list.add("A"); list.add("B"); list.add("C");
ArrayList但是,我不太喜欢这个方法,因为这样最终得到的是一个ArrayList的子类,这个子类有一个实例初始化器,并且创建这个类只是为了创建一个对象,对我来说有些难以忍受。list = new ArrayList () {{ add("A"); add("B"); add("C"); }};
如果项目Project Coin的Collection Literals提案被Java标准接受(它预定会被加入到Java 7中,但也很有可能在java 8被移除)那么还有这种写法。
List不幸的是该方法在这里不行,因为它会初始化成一个不可变的List而不是一个ArrayList,况且它现在还不能用,得等以后才行。list = ["A", "B", "C"];