2012-04-27 6 views
13

Quindi so come avere una lista collegata e usare il metodo add per inserire le voci per voci. Tuttavia, non voglio aggiungere voci per voci. C'è un modo per dichiarare una lista collegata con valori iniziali nella lista?Come posso inizializzare una lista collegata con voci/valori al suo interno?

Ad esempio, se voglio avere 1.0 & 2.0 nell'elenco c'è qualcosa che posso fare in una riga? Qualcosa di simile:

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

Dipende da cosa si vuole fare con "voci", anche se potrebbe essere un'idea migliore usare sia ad un 'Mappa' o ha elenchi separati per le chiavi e i valori. Metterli insieme, uno accanto all'altro in una lista, è davvero imbarazzante. –

+0

@LouisWasserman: Non sembra che l'OP desideri le voci nel senso delle voci della mappa ... solo elementi nella lista. – ColinD

+0

Sì, è per questo che ho suggerito di dividere le liste in due. Certamente se aggiungete coppie di elementi "correlati" alla lista, avrebbe più senso avvolgerli in un oggetto o dividerli in due liste. Sicuramente c'è una soluzione alla domanda di base dell'OP "Come posso inizializzare una lista con alcuni elementi specifici", ma il resto della domanda sembra che forse non è l'approccio migliore al vero problema dell'OP. –

risposta

43

Potete farlo in questo modo:

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

LinkedList ha il seguente costruttore, che accetta un parametro di tipo Collection:

public LinkedList(Collection<? extends E> c) 

Questo costruttore 'costrutti un elenco contenente gli elementi della raccolta specificata, nell'ordine in cui vengono restituiti dall'iteratore della raccolta. "

Pertanto, è possibile utilizzare questo costruttore per dichiarare uno LinkedList e inizializzarlo con i valori al momento della dichiarazione. È possibile fornire un'istanza di qualsiasi tipo Collection<Double>.

Se avete solo un insieme di valori, ma non un oggetto Collection, quindi è possibile utilizzare la classe java.util.Arrays che ha il asList() metodo statico che convertirà l'insieme dei valori forniti a un List e ritorno. Vedere l'esempio di seguito:

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

Se avete bisogno di un 'istanza di List<Double> allora è necessario fornire i valori con una cifra decimale, altrimenti la si otterrà un'istanza di List<Integer> con i valori.

3

È inoltre possibile creare metodo come

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

    return newList; 
} 

e utilizzarlo con:

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

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