2012-04-27 14 views
13

Así que sé cómo tener una lista vinculada y usar el método agregar para ingresar entradas por entradas. Sin embargo, no deseo agregar entradas por entradas. ¿Hay alguna manera de declarar una lista enlazada con valores iniciales en la lista?¿Cómo puedo inicializar una LinkedList con entradas/valores en ella?

Por ejemplo, si quiero tener 1.0 & 2.0 en la lista ¿hay algo que pueda hacer en una línea? Algo así como:

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

depende de lo que quiere hacer con "entradas", aunque podría ser una mejor idea de utilizar una 'Mapa' o tiene listas separadas para las claves y valores. Ponerlos juntos, uno al lado del otro en una lista, es realmente incómodo. –

+0

@LouisWasserman: No parece que el OP quiere entradas en el sentido de entradas de mapas ... solo elementos en la lista. – ColinD

+0

Sí, es por eso que sugerí dividir las listas en dos. Ciertamente, si agrega pares de elementos "relacionados" a la lista, tendría más sentido envolverlos en un objeto o dividirlos en dos listas. Ciertamente hay una solución a la pregunta básica del OP "¿Cómo puedo inicializar una lista con algunos elementos específicos?", Pero el resto de la pregunta parece que tal vez no sea el mejor enfoque para el problema real del PO. –

Respuesta

43

Puede hacerlo de esta manera:

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

LinkedList tiene el siguiente constructor, que acepta un parámetro de tipo Collection:

public LinkedList(Collection<? extends E> c) 

Este constructor 'constructos una lista que contiene los elementos de la colección especificada, en el orden en que el iterador de la colección los devuelve ".

Por lo tanto, podría usar este constructor para declarar LinkedList e inicializarlo con los valores en el momento de la declaración. Puede proporcionar una instancia de cualquier tipo Collection<Double>.

Si sólo tiene un conjunto de valores, pero no un objeto Collection, a continuación, puede utilizar la clase java.util.Arrays que tiene la asList() método estático que convertirá el conjunto de valores proporcionados a un List y retorno. Véase el siguiente ejemplo:

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

Si necesita una instancia de List<Double> entonces usted tiene que proporcionar los valores con un decimal, de lo contrario el que obtendrá una instancia de List<Integer> con los valores.

3

También puede crear un método similar

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

    return newList; 
} 

y los uso con:

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

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