Arrays.asList(T array)?
所以有Arrays.asList(T... a)
但这适用于varargs。
如果我已经将数组放在T[] a
怎么办? 是否有一种方便的方法来创建List
,或者我必须手动执行以下操作:
static public List arrayAsList(T[] a) { List result = new ArrayList(a.length); for (T t : a) result.add(t); return result; }
仅因为它适用于varargs并不意味着你无法正常调用它:
String[] x = { "a", "b", "c" }; List list = Arrays.asList(x);
唯一棘手的问题是如果T
是Object
,你应该使用强制转换来告诉编译器它是否应该将参数包装在数组中:
Object[] x = ...; List
要么
Object[] x = ...; List
您可能已经知道,有一个名为java.util.Collections的静态类,它有许多用于处理机智数组的有用方法,例如搜索和排序。
至于你的问题,Collection接口指定了add
, remove
和toArray
等方法。 出于这样或那样的原因,API的作者决定add
和addAll
方法将是提供给用户的唯一输入函数。
Java Lists无法添加对象数组的一个原因是列表使用迭代器,并且迭代器的滚动(即转到下一个值)比不必具有所有索引值的数组更严格i =(1, 2,5,9,22,……) 。
此外,arrays不是类型安全的 ; 也就是说,它们不能保证所有元素都符合特定的超类或接口,而generics( List
是其成员)可以保证类型安全。 因此,列表有机会使用add
方法validation每个项目。
我认为您可以放心,您在列表中添加数组的方法是在Java中实现此效果的最有效(如果不是最有效)方法之一。