如何用值声明一个 ArrayList? [复制]
Posted
技术标签:
【中文标题】如何用值声明一个 ArrayList? [复制]【英文标题】:How to declare an ArrayList with values? [duplicate] 【发布时间】:2014-03-08 22:33:26 【问题描述】:ArrayList or List declaration in Java 已经质疑并回答了如何声明一个空的ArrayList
但是我如何声明一个带有值的 ArrayList?
我尝试了以下方法,但它返回语法错误:
import java.io.IOException;
import java.util.ArrayList;
public class test
public static void main(String[] args) throws IOException
ArrayList<String> x = new ArrayList<String>();
x = ['xyz', 'abc'];
【问题讨论】:
【参考方案1】:在 Java 9+ 中你可以这样做:
var x = List.of("xyz", "abc");
// 'var' works only for local variables
Java 8 使用 Stream
:
Stream.of("xyz", "abc").collect(Collectors.toList());
当然,您可以使用接受Collection
的构造函数创建一个新对象:
List<String> x = new ArrayList<>(Arrays.asList("xyz", "abc"));
提示:docs 包含非常有用的信息,通常包含您正在寻找的答案。例如,这里是 ArrayList
类的构造函数:
ArrayList()
构造一个初始容量为 10 的空列表。
ArrayList(Collection<? extends E> c)
(*)
按照集合的迭代器返回的顺序构造一个包含指定集合元素的列表。
ArrayList(int initialCapacity)
构造一个具有指定初始容量的空列表。
【讨论】:
在 LHS 上使用 List 而不是 ArrayList,如果您在那里绝对不需要 ArrayList。并使用 RHS 上的菱形运算符来避免警告。 短而干净的解决方案 为什么用 new ArrayList() 包装?List<String> x = Arrays.asList("xyz", "abc")
没问题
流解决方案优雅
重复文档的某些部分没有害处 - *** 可能更受欢迎。【参考方案2】:
Guava library 包含用于创建列表和其他集合的便捷方法,这比使用标准库类更漂亮。
例子:
ArrayList<String> list = newArrayList("a", "b", "c");
(假设import static com.google.common.collect.Lists.newArrayList;
)
【讨论】:
【参考方案3】:用途:
List<String> x = new ArrayList<>(Arrays.asList("xyz", "abc"));
如果以后不想在列表中添加新元素,也可以使用(Arrays.asList返回固定大小的列表):
List<String> x = Arrays.asList("xyz", "abc");
注意:如果你愿意,你也可以使用静态导入,那么它看起来像这样:
import static java.util.Arrays.asList;
...
List<String> x = new ArrayList<>(asList("xyz", "abc"));
或
List<String> x = asList("xyz", "abc");
【讨论】:
感谢固定尺寸。在Set<List<T>> = Arrays.asList("a","b");
的contains
方法上速度更快【参考方案4】:
试试这个!
List<String> x = new ArrayList<String>(Arrays.asList("xyz", "abc"));
如果您不必调用特定方法,最好使用接口List
声明ArrayList
。
【讨论】:
【参考方案5】:使用这个:
ArrayList<String> x = new ArrayList(Arrays.asList("abc", "mno"));
【讨论】:
【参考方案6】:你可以这样做:
List<String> temp = new ArrayList<String>(Arrays.asList("1", "12"));
【讨论】:
以上是关于如何用值声明一个 ArrayList? [复制]的主要内容,如果未能解决你的问题,请参考以下文章