2012-04-27 19 views
13

Więc wiem, jak mieć listę połączonych i użyć metody dodawania do wprowadzania wpisów przez wpisy. Jednak nie chcę dodawać wpisów według wpisów. Czy istnieje sposób, aby zadeklarować listę linków z początkowymi wartościami na liście?Jak mogę zainicjować LinkedList z wpisami/wartościami w nim?

Na przykład, jeśli chcę mieć 1.0 & 2.0 na liście, czy mogę coś zrobić w jednym wierszu? Coś jak:

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

Zależy co chcesz zrobić z „pozycji”, choć być może jest to lepszy pomysł, albo użyć 'Mapa' lub osobne listy dla kluczy i wartości. Składanie ich razem, tuż obok siebie na jednej liście, jest naprawdę niezręczne. –

+0

@LouisWasserman: Nie brzmi tak, jak OP chce wpisów w sensie wpisów w mapie ... tylko elementy na liście. – ColinD

+0

Tak, dlatego zasugerowałem podzielenie list na dwie części. Z pewnością, jeśli dodajesz "powiązane" pary elementów do listy, bardziej sensownym byłoby zawijanie ich w obiekt lub dzielenie na dwie listy. Z pewnością istnieje odpowiedź na podstawowe pytanie OP "Jak mogę zainicjować listę z pewnymi określonymi elementami", ale pozostała część pytania brzmi, jakby to nie było najlepsze podejście do rzeczywistego problemu PO. –

Odpowiedz

43

można to zrobić w ten sposób:

List<Double> temp1 = new LinkedList<Double>(Arrays.asList(1.0, 2.0)); 
8

LinkedList posiada następujące konstruktora, który przyjmuje parametr typu Collection:

public LinkedList(Collection<? extends E> c) 

Ten konstruktor „konstruktów listę zawierającą elementy określonej kolekcji, w kolejności, w jakiej są one zwracane przez iterator kolekcji. "

Dlatego można użyć tego konstruktora do zadeklarowania LinkedList i zainicjować go wartościami w momencie deklaracji. Możesz podać instancję dowolnego typu Collection<Double>.

Jeśli masz tylko zbiór wartości, ale nie jest Collection obiekt, a następnie można użyć klasy java.util.Arrays która ma statyczny asList() metodę, która będzie przekształcić zbiór wartości przewidzianych do List i powrotu. Patrz poniższy przykład:

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

Jeśli potrzebujesz instancję List<Double> wtedy musisz podać wartości z miejsca po przecinku, w przeciwnym razie masz instancję List<Integer> z wartościami.

3

Można również utworzyć metodę jak

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

    return newList; 
} 

i używać go z:

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

     for (Integer item : a) { 
      System.out.println(item); 
     }