一尘不染

数组到集合:优化的代码

java

有没有更好的方法来实现这一目标?

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;
}

只看它, 我相信它比第一种方法更快


阅读 197

收藏
2020-12-03

共1个答案

一尘不染

您用更好的方式表示什么:

更具可读性:

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)必须首先执行检查。

2020-12-03