45

所以我知道如何拥有一个链表并使用 add 方法按条目输入条目。但是,我不想按条目添加条目。有没有办法在列表中声明具有初始值的链表?

例如,如果我想在列表中包含 1.0 和 2.0,我可以在一行中做些什么吗?就像是:

List<Double> temp1 = new LinkedList<Double>(1,2);
4

4 回答 4

90

你可以这样做:

List<Double> temp1 = new LinkedList<Double>(Arrays.asList(1.0, 2.0));
于 2012-04-27T02:32:54.757 回答
13

LinkedList具有以下构造函数,它接受类型参数Collection

public LinkedList(Collection<? extends E> c)

此构造函数“按照集合的迭代器返回的顺序构造一个包含指定集合元素的列表。”

因此,您可以使用此构造函数来声明 aLinkedList并在声明时使用值对其进行初始化。您可以提供任何Collection<Double>类型的实例。

如果您只有一组值但没有Collection对象,那么您可以使用java.util.Arrays具有静态asList()方法的类,该方法会将提供的一组值转换为 aList并返回。请参见下面的示例:

 List<Double> list = new LinkedList<Double>(Arrays.asList(1.2,1.3,3.2));

如果您需要一个实例,List<Double>那么您必须提供带小数位的值,否则您将获得一个List<Integer>带有这些值的实例。

于 2012-04-27T02:54:23.970 回答
6

如果你使用的是 JDK9+,你可以List.of(...)像这样使用:

List<Double> myList = new LinkedList<>(List.of(10D, 11D));
于 2020-05-08T02:27:18.137 回答
5

您还可以创建类似的方法

static <T> LinkedList<T> createLinkedList(T...elements) {
    LinkedList<T> newList = new LinkedList<T>();
    for (T el : elements) {
        newList.add(el);
    }

    return newList;
}

并将其用于:

        LinkedList<Integer> a = createLinkedList(1, 2, 3);

        for (Integer item : a) {
            System.out.println(item);
        }
于 2012-10-22T21:01:47.020 回答