Wie Tom sagte :
List<String> places = Arrays.asList("Buenos Aires", "Córdoba", "La Plata");
Aber da Sie sich beschwert haben, dass Sie eine ArrayList wollen, sollten Sie zunächst wissen, dass ArrayList eine Unterklasse von List ist und Sie könnten einfach diese Zeile hinzufügen:
ArrayList<String> myPlaces = new ArrayList(places);
Allerdings könnten Sie sich dann über die "Leistung" beschweren.
In diesem Fall macht es für mich keinen Sinn, warum Ihre Liste nicht als Array definiert wurde, da sie vordefiniert ist (da die Größe zum Zeitpunkt der Initialisierung bekannt ist). Und wenn das eine Option für Sie ist:
String[] places = {"Buenos Aires", "Córdoba", "La Plata"};
Falls Ihnen die geringen Leistungsunterschiede egal sind, können Sie auch ganz einfach ein Array in eine ArrayList kopieren:
ArrayList<String> myPlaces = new ArrayList(Arrays.asList(places));
Okay, aber in Zukunft brauchen Sie mehr als nur den Ortsnamen, Sie brauchen auch einen Ländercode. Wenn man davon ausgeht, dass es sich um eine vordefinierte Liste handelt, die sich während der Laufzeit nie ändert, dann ist es passend, eine enum
Dies würde eine Neukompilierung erfordern, wenn die Liste in Zukunft geändert werden soll.
enum Places {BUENOS_AIRES, CORDOBA, LA_PLATA}
werden würde:
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;
}
}
Enum's haben eine statische values
Methode, die ein Array zurückgibt, das alle Werte der Aufzählung in der Reihenfolge enthält, in der sie deklariert sind, z. B.:
for (Places p:Places.values()) {
System.out.printf("The place %s has code %d%n",
p.name, p.code);
}
In diesem Fall würde ich vermuten, dass Sie Ihre ArrayList nicht benötigen.
P.S. Randyaa demonstriert eine weitere gute Möglichkeit, die statische Dienstprogramm-Methode zu verwenden Collections.addAll .
43 Stimmen
Wenn dies für Unit-Tests gedacht ist, sollten Sie Groovy einmal ausprobieren. Sie können Ihren Testcode in Groovy schreiben, während Sie Java-Code testen, und mit
ArrasyList<String> places = ["Buenos Aires", "Córdoba", "La Plata"]
5 Stimmen
In Java SE 7 können Sie den parametrisierten Typ des Konstruktors durch eine leere Menge von Typparametern (<>) ersetzen: Map<String, List<String>> myMap = new HashMap<>();
2 Stimmen
Siehe auch stackoverflow.com/questions/157944/erstelle-arraylist-aus-array
2 Stimmen
Doppelte Klammern zur Initialisierung verwenden :)
0 Stimmen
Es scheint, dass Sie sich die Frage selbst beantwortet haben: ArrayList<String> places = new ArrayList<String>(asList("Buenos Aires", "Córdoba", "La Plata")); Arrays in Arrays.asList ist nicht erforderlich.
13 Stimmen
Stream.of("val1", "val2").collect(Collectors.toList()); //erzeugt ArrayList, Java8-Lösung.
0 Stimmen
Warum nicht einfach String [] places = {"Buenos Aires", "Córdoba", "La Plata"); ?
0 Stimmen
@PaulSmith Er könnte an einem elastischen Array interessiert sein, das dynamisch wachsen kann. Ihre Initialisierung macht Orte nur drei Elemente zu haben.
4 Stimmen
Ich verstehe nicht, warum wir nicht so etwas haben können wie
List<Integer> = {1, 2, 3, 4, 5}
in Java. Erstellen und init ein veränderbares Array in einer Zeile, wie ich weiß, Python und Swift könnte das tun.