我有一个示例程序,如图所示.
我希望我ArrayList
symbolsPresent
用一些预定义的符号初始化:ONE,TWO,THREE和FOUR.
symbolsPresent.add("ONE");
symbolsPresent.add("TWO");
symbolsPresent.add("THREE");
symbolsPresent.add("FOUR");
Run Code Online (Sandbox Code Playgroud)
import java.util.ArrayList;
public class Test {
private ArrayList<String> symbolsPresent = new ArrayList<String>();
public ArrayList<String> getSymbolsPresent() {
return symbolsPresent;
}
public void setSymbolsPresent(ArrayList<String> symbolsPresent) {
this.symbolsPresent = symbolsPresent;
}
public static void main(String args[]) {
Test t = new Test();
System.out.println("Symbols Present is" + t.symbolsPresent);
}
}
Run Code Online (Sandbox Code Playgroud)
那可能吗?
sam*_*mba 142
试试这个
new String[] {"One","Two","Three","Four"};
Run Code Online (Sandbox Code Playgroud)
要么
List<String> places = Arrays.asList("One", "Two", "Three");
Run Code Online (Sandbox Code Playgroud)
Rei*_*eus 54
双括号初始化是一个选项:
List<String> symbolsPresent = new ArrayList<String>() {{
add("ONE");
add("TWO");
add("THREE");
add("FOUR");
}};
Run Code Online (Sandbox Code Playgroud)
需要注意的是String
一般类型的参数是通过所指示的所分配的表达必要JLS§15.9
如果类实例创建表达式使用类的"<>"形式为类的类型参数声明一个匿名类,那么这是一个编译时错误.
Per*_*ror 17
如何使用重载的ArrayList构造函数.
private ArrayList<String> symbolsPresent = new ArrayList<String>(Arrays.asList(new String[] {"One","Two","Three","Four"}));
Run Code Online (Sandbox Code Playgroud)
Dil*_*nga 11
您还可以使用varargs语法使代码更清晰:
使用重载的构造函数:
ArrayList<String> list = new ArrayList<String>(Arrays.asList("a", "b", "c"));
Run Code Online (Sandbox Code Playgroud)
utils模块中的子类ArrayList:
public class MyArrayList<T> extends ArrayList<T> {
public MyArrayList(T... values) {
super(Arrays.asList(values));
}
}
ArrayList<String> list = new MyArrayList<String>("a", "b", "c");
Run Code Online (Sandbox Code Playgroud)
或者有一个静态工厂方法(我的首选方法):
public class Utils {
public static <T> ArrayList<T> asArrayList(T... values) {
return new ArrayList<T>(Arrays.asList(values));
}
}
ArrayList<String> list = Utils.asArrayList("a", "b", "c");
Run Code Online (Sandbox Code Playgroud)
Kri*_*hes 10
import com.google.common.collect.Lists;
...
ArrayList<String> getSymbolsPresent = Lists.newArrayList("item 1", "item 2");
...
Run Code Online (Sandbox Code Playgroud)
您可以使用Java 8 Stream API.
您可以创建对象流并将其作为列表收集.
private List<String> symbolsPresent = Stream.of("ONE", "TWO", "THREE", "FOUR")
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
public static final List<String> permissions = new ArrayList<String>() {{
add("public_profile");
add("email");
add("user_birthday");
add("user_about_me");
add("user_location");
add("user_likes");
add("user_posts");
}};
Run Code Online (Sandbox Code Playgroud)