从现有List

时间:2017-08-25 20:27:08

标签: java arraylist

我今天遇到了这段令人费解的代码:

public List<MyObject> toNewList(List<MyObject> someObjects) {

    return new ArrayList<>(Arrays.asList(someObjects.toArray(new MyObject[someObjects.size()])));

}

上述代码与以下代码段之间有什么区别吗?

public List<MyObject> toNewList(List<MyObject> someObjects) {

    return new ArrayList<>(someObjects);

}

修改 回顾提交历史记录可以深入了解转换代码。以下是每个例子:

第一次提交:

return someObjects.toArray(new MyObject[0]);

第二次提交:

return Arrays.asList(someObjects.toArray(new MyObject[0]));

第三次提交:

return Arrays.asList(someObjects.toArray(new MyObject[someObjects.size()]));

最终提交:

return new ArrayList<MyObject>(Arrays.asList(someObjects.toArray(new MyObject[someObjects.size()])));

绝对是一个清理杂乱代码的好提醒!

1 个答案:

答案 0 :(得分:3)

根本没有功能差异。两者都调用ArrayList的same constructor,第一个是多余的。

首先,您正在进行将List转换为List的往返,这完全是不必要的。第二种方式简单而干净。