为了账号安全,请及时绑定邮箱和手机立即绑定

在一行中初始化ArrayList

在一行中初始化ArrayList

ABOUTYOU 2019-06-20 10:32:30
在一行中初始化ArrayList我想为测试目的创建一个选项列表。一开始,我做了这样的事:ArrayList<String> places = new ArrayList<String>();places.add("Buenos Aires");places.add("Córdoba");places.add("La Plata");然后,我将代码重构如下:ArrayList<String> places = new ArrayList<String>(     Arrays.asList("Buenos Aires", "Córdoba", "La Plata"));有更好的方法吗?
查看完整描述

3 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

实际上,可能是初始化ArrayList是您编写的方法,因为它不需要创建新的List以任何方式:

ArrayList<String> list = new ArrayList<String>();list.add("A");list.add("B");list.add("C");

问题是,需要输入相当多的类型才能引用它。list举个例子。

还有其他方法,例如使用实例初始化器(也称为“双大括号初始化”)创建匿名内部类:

ArrayList<String> list = new ArrayList<String>() {{
    add("A");
    add("B");
    add("C");}};

但是,我不太喜欢这个方法,因为您最终得到的是ArrayList它有一个实例初始化器,创建这个类只是为了创建一个对象-对我来说,这似乎有点过火了。

如果收集文字提案钱币工程已被接受(计划在Java 7中引入它,但它也不太可能是Java 8的一部分):

List<String> list = ["A", "B", "C"];

不幸的是,它不会在这里帮助您,因为它将初始化一个不可变的List而不是ArrayList,而且,如果将来的话,它还没有上市。


查看完整回答
反对 回复 2019-06-20
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

如果你把它声明为List-它一定要是一辆ArrayList吗?

List<String> places = Arrays.asList("Buenos Aires", "Córdoba", "La Plata");

或者,如果您只有一个元素:

List<String> places = Collections.singletonList("Buenos Aires");

这意味着places不变(试图更改它将导致UnsupportedOperationException(要抛出的异常)。

创建一个可更改的列表,这是一个具体的列表。ArrayList您可以创建一个ArrayList从不变的列表中:

ArrayList<String> places = new ArrayList<>(Arrays.asList("Buenos Aires", "Córdoba", "La Plata"));


查看完整回答
反对 回复 2019-06-20
  • 3 回答
  • 0 关注
  • 950 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信