在java中初始化字符串列表的最短方法是什么?
2022-08-31 14:39:38
我正在寻找初始化字符串列表和字符串数组的最短方法(在代码中),即包含“s1”,“s2”,“s3”字符串元素的列表/数组。
我正在寻找初始化字符串列表和字符串数组的最短方法(在代码中),即包含“s1”,“s2”,“s3”字符串元素的列表/数组。
有多种选择。就个人而言,我喜欢使用番石榴:
List<String> strings = Lists.newArrayList("s1", "s2", "s3");
(无论如何,番石榴是一个值得拥有的图书馆,当然:)
仅使用 JDK,您可以使用:
List<String> strings = Arrays.asList("s1", "s2", "s3");
请注意,这将返回一个 ,但这不是正常的 - 它是一个可变但大小固定的内部。ArrayList
java.util.ArrayList
就个人而言,我更喜欢番石榴版本,因为它清楚地表明了正在发生的事情(将返回的列表实现)。如果您静态导入该方法,仍然很清楚发生了什么:
// import static com.google.common.collect.Lists.newArrayList;
List<String> strings = newArrayList("s1", "s2", "s3");
...而如果你静态导入,它看起来有点奇怪。asList
另一个番石榴选项,如果你不想要一个可修改的任意方式列表:
ImmutableList<String> strings = ImmutableList.of("s1", "s2", "s3");
我通常希望有一个完全可变的列表(在这种情况下是最好的)或一个完全不可变的列表(在这种情况下是最好的)。我真的想要一个可变但固定大小的列表是很少见的。Lists.newArrayList
ImmutableList.of
Java 9 引入了一个方便的方法 List.of
,使用方法如下:
List<String> l = List.of("s1", "s2", "s3");
以下是一些替代方法:
// Short, but the resulting list is fixed size.
List<String> list1 = Arrays.asList("s1", "s2", "s3");
// Similar to above, but the resulting list can grow.
List<String> list2 = new ArrayList<>(Arrays.asList("s1", "s2", "s3"));
// Using initialization block. Useful if you need to "compute" the strings.
List<String> list3 = new ArrayList<String>() {{
add("s1");
add("s2");
add("s3");
}};
当涉及到数组时,你可以在声明点初始化它,如下所示:
String[] arr = { "s1", "s2", "s3" };
如果您需要重新初始化它或创建它而不将其存储在变量中,则您需要
new String[] { "s1", "s2", "s3" }
如果字符串常量是可能的,它看起来像
String[] arr = { "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10",
"s11", "s12", "s13" };
在这些情况下,我通常更喜欢写作。
String[] arr = "s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13".split(",");