В JavaScript я могу создать Массив строковых значений как:
var stuff = new Array('foo','bar','baz','boz','gaz','goz');
или еще легче
var stuff = 'foo,bar,baz,boz,gaz,goz'.split(',');
В Java это кажется чрезмерно подробным, и сложный... там более легкий путь, чем это?
ArrayList<String> stuff = new ArrayList<String>();
stuff.add("foo");
stuff.add("bar");
stuff.add("baz");
stuff.add("boz");
stuff.add("gaz");
stuff.add("goz");
В моем фактическом сценарии у меня есть 30-40 объектов, входящих в ArrayList... Я фигурирую там, просто должен быть более легкий путь! Каков очевидный бит, который я пропускаю?
List
или
List
Arrays.asList() - хороший способ получить реализацию List, хотя технически это не реализация ArrayList, а внутренний тип.
Если вам действительно нужно, чтобы это был ArrayList, вы можете написать быстрый служебный метод:
public static List<String> create(String... items) {
List<String> list = new ArrayList<String>(items.length);
for (String item : items) {
list.add(item);
}
return list;
}
Если вы заглушаете 30-40 пунктов в список во время составления, это может быть симптомом большего заболения. Это во многом зависит от того, что вы реализуете. Вы все еще можете использовать split, если вы действительно хотите. Затем просто сделайте массовую вставку в свой список.
С оговоркой, что я только сам изучаю Коллекции Java, для меня компилируется и запускается следующее:
import java.util.*;
class ArrayListStrings {
public static void main(String[] args) {
String[] stuffArray = {"foo","bar","baz","boz","gaz","goz"};
ArrayList<String> stuff = new ArrayList<String>();
stuff.addAll(Arrays.asList(stuffArray));
for (int i = 0; i < stuff.toArray().length; i++)
System.out.println(stuff.toArray()[i]);
}
}
Результат:
foo
бар
баз
boz
газ
goz
как использовать приведенный ниже код, используя http://code.google.com/p/guava-libraries/
import static com.google.common.collect.Lists.*;
List<String> stuff = newArrayList("foo","bar","baz","boz","gaz","goz");