new ArrayList <T>(T [] arr)

gbt*_*mon 4 java

好吧所以这对我来说没有意义......也许有人可以解释一下.我想出的将原始数组转换为ArrayLists的技术如下.

arr = new ArrayList<String>(Arrays.asList(primitveArray));
Run Code Online (Sandbox Code Playgroud)

这项工作很好.但是今天,我开始想知道这是多么有效,因为我碰巧在写一些代码,其中性能更重要然后它曾在我过去曾做过的其他应用程序中,并决定查看源代码Arrays.asList()

我找到了这个:

public static <T> List<T> asList(T... array) {
    return new ArrayList<T>(array);
}
Run Code Online (Sandbox Code Playgroud)

我对自己说:"我是一个白痴,它只是将数组传递给ArrayList构造函数ArrayList<T>(T[] arr),为什么我不跳过一步而不使用愚蠢的Arrays.asList?

所以我试试这个

arr = new ArrayList<T>(primitveArray)
Run Code Online (Sandbox Code Playgroud)

在我的代码中.但后来突然间ArrayList<T>(T[] arr)未定义.我很困惑为什么会这样?

NPE*_*NPE 5

但后来突然间ArrayList<T>(T[] arr)未定义.我很困惑为什么会这样?

有两个类名为ArrayList:

  • 一个是private static内在阶级java.util.Arrays;
  • 另一个是java.util.ArrayList.

asList()使用前者.你正试图使用​​后者.这两个类是无关的,它们碰巧共享相同的名称.

请务必注意,java.util.Arrays.ArrayList不要复制数组.它提供了一个视图.