Как Том сказал :
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
, который потребует повторной компиляции, если список потребуется изменить в будущем.
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;
}
}
У перечислений есть статический метод values
, который возвращает массив, содержащий все значения перечисления в порядке их объявления, например ::
for (Places p:Places.values()) {
System.out.printf("The place %s has code %d%n",
p.name, p.code);
}
В таком случае, я думаю, вам не нужен ваш ArrayList.
P.S. Рандяа продемонстрировал еще один замечательный способ с использованием метода статической утилиты Collections.addAll .