正如汤姆所说:
List<String> places = Arrays.asList("Buenos Aires", "Córdoba", "La Plata");
但是,既然你抱怨想要一个ArrayList,你应该首先知道ArrayList是List的一个子类,你可以简单地添加这一行:
ArrayList<String> myPlaces = new ArrayList(places);
不过,这可能会让你抱怨“表现”。
在这种情况下,这对我来说没有意义,为什么,因为您的列表是预定义的,所以它没有被定义为数组(因为在初始化时大小是已知的)。如果这是你的选择:
String[] places = {"Buenos Aires", "Córdoba", "La Plata"};
如果您不关心细微的性能差异,那么您也可以非常简单地将数组复制到ArrayList:
ArrayList<String> myPlaces = new ArrayList(Arrays.asList(places));
好吧,但未来你需要的不仅仅是地名,还需要国家代码。假设这仍然是一个预定义的列表,在运行时不会更改,那么使用枚举集是合适的,如果将来需要更改列表,则需要重新编译。
enum Places {BUENOS_AIRES, CORDOBA, LA_PLATA}
将变成:
enum Places {
BUENOS_AIRES("Buenos Aires",123),
CORDOBA("Córdoba",456),
LA_PLATA("La Plata",789);
String name;
int code;
Places(String name, int code) {
this.name=name;
this.code=code;
}
}
枚举有一个静态值方法,该方法返回一个数组,该数组按声明顺序包含枚举的所有值,例如:
for (Places p:Places.values()) {
System.out.printf("The place %s has code %d%n",
p.name, p.code);
}
在这种情况下,我想你不需要你的ArrayList。
P.S.Randyaa演示了使用静态实用程序方法Collections.addAll的另一种好方法。