给定Element[]类型的数组:

Element[] array = {new Element(1), new Element(2), new Element(3)};

如何将此数组转换为ArrayList<Element>类型的对象?

ArrayList<Element> arrayList = ???;

当前回答

在创建大量ArrayList并需要简洁语法时,我使用了以下helper方法:

import java.util.ArrayList;
import java.util.Arrays;

class Main {

    @SafeVarargs
    public static <T> ArrayList<T> AL(T ...a) {
        return new ArrayList<T>(Arrays.asList(a));
    }

    public static void main(String[] args) {
        var al = AL(AL(1, 2, 3, 4), AL(AL(5, 6, 7), AL(8, 9)));
        System.out.println(al); // => [[1, 2, 3, 4], [[5, 6, 7], [8, 9]]]
    }
}

Guava使用相同的方法,因此@SafeVarargs在这里看起来很安全。另请参阅Java SafeVarargs注释,是否存在标准或最佳实践?。

其他回答

如果我们看到Arrays.asList()方法的定义,您将得到如下结果:public static<T>List<T>asList(T…a)//varargs为T类型。因此,您可以这样初始化arraylist:List<Element>arraylist=Arrays.asList(新元素(1),新元素(2),新元素元素(3));注意:每个新元素(int args)将被视为单个对象,并可以作为var args传递。这个问题也可能有另一个答案。如果您看到java.util.Collections.addAll()方法的声明,您将得到如下结果:public static<T>boolean addAll(集合<?super T>c,T…a);因此,这段代码也很有用Collections.addAll(arraylist,array);

在Java 9中,您可以使用:

List<String> list = List.of("Hello", "World", "from", "Java");
List<Integer> list = List.of(1, 2, 3, 4, 5);

在创建大量ArrayList并需要简洁语法时,我使用了以下helper方法:

import java.util.ArrayList;
import java.util.Arrays;

class Main {

    @SafeVarargs
    public static <T> ArrayList<T> AL(T ...a) {
        return new ArrayList<T>(Arrays.asList(a));
    }

    public static void main(String[] args) {
        var al = AL(AL(1, 2, 3, 4), AL(AL(5, 6, 7), AL(8, 9)));
        System.out.println(al); // => [[1, 2, 3, 4], [[5, 6, 7], [8, 9]]]
    }
}

Guava使用相同的方法,因此@SafeVarargs在这里看起来很安全。另请参阅Java SafeVarargs注释,是否存在标准或最佳实践?。

您可以使用Cactos创建ArrayList(我是开发人员之一):

List<String> names = new StickyList<>(
  "Scott Fitzgerald", "Fyodor Dostoyevsky"
);

不能保证该对象实际上是ArrayList类。如果您需要该担保,请执行以下操作:

ArrayList<String> list = new ArrayList<>(
  new StickyList<>(
    "Scott Fitzgerald", "Fyodor Dostoyevsky"
  )
);

使用Stream(从java 16开始)

new ArrayList<>(Arrays.stream(array).toList());