繁体   English   中英

Arrays.asList(T [] array)?

[英]Arrays.asList(T[] array)?

所以有Arrays.asList(T... a)但这适用于varargs。

如果我已经将数组放在T[] a怎么办? 是否有一种方便的方法来创建List<T> ,或者我必须手动执行:

static public <T> List<T> arrayAsList(T[] a)
{
   List<T> result = new ArrayList<T>(a.length);
   for (T t : a)
     result.add(t);
   return result;
}

仅仅因为它适用于varargs并不意味着你不能正常调用它:

String[] x = { "a", "b", "c" };
List<String> list = Arrays.asList(x);

唯一棘手的问题是如果TObject ,你应该使用强制转换告诉编译器是否应该将参数包装在数组中:

Object[] x = ...;
List<Object> list = Arrays.asList((Object[]) x);

要么

Object[] x = ...;
List<Object[]> list = Arrays.asList((Object) x);

您可能已经知道,有一个名为java.util.Collections的静态类,它有许多用于处理机智数组的有用方法,例如搜索和排序。

至于你的问题,Collection接口指定了addremovetoArray等方法。 出于这样或那样的原因,API的作者决定addaddAll方法将是提供给用户的唯一输入函数。

Java Lists无法添加对象数组的一个原因是列表使用迭代器,并且迭代器的滚动(即转到下一个值)比不必具有所有索引值的数组更严格i =(1, 2,5,9,22,......)

此外,阵列不是类型安全的 ; 也就是说,它们不能保证所有元素都符合特定的超类或接口,而泛型( List是其成员)可以保证类型安全。 因此,列表有机会使用add方法验证每个项目。

我认为您可以放心,您在列表中添加数组的方法是在Java中实现此效果的最有效(如果不是最有效)方法之一。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM