有没有更好的方法来实现这一目标?
public static List<String> toList(String[] array) { List<String> list = new ArrayList(array.length); for(int i=0; i<array.length; i++) list.add(array[i]); return list; }
注意: Arrays.asList(a)返回由指定数组支持的固定大小的列表。 (将返回的列表更改为“直写”到数组。)。我不要那种行为 我认为我上面的功能绕过了(或者我错了吗?)
因此,这里有另一种方法:
public static List<String> toList(String[] array) { List<String> list = new ArrayList(array.length); list.addAll(Arrays.asList(array)); return list; }
只看它, 我相信它比第一种方法更快 。
您用更好的方式表示什么:
更具可读性:
List<String> list = new ArrayList<String>(Arrays.asList(array));
更少的内存消耗,并且可能更快(但绝对不是线程安全的):
public static List<String> toList(String[] array) { if (array==null) { return new ArrayList(0); } else { int size = array.length; List<String> list = new ArrayList(size); for(int i = 0; i < size; i++) { list.add(array[i]); } return list; } }
顺便说一句:这是您的第一个示例中的错误:
array.length如果array为null,将引发null指针异常,因此if (array!=null)必须首先执行检查。
array.length
if (array!=null)