Orden de inserción y recuperación de ArrayList

88

Supongamos que inserto 5 cadenas en un ArrayList. ¿El orden de inserción y recuperación del ArrayListmismo será el mismo?

dragón divino
fuente
88
Una cosa es probarlo una vez. Otra es estar seguro de que siempre va a ser igual.
Suragch

Respuestas:

82

Verifique el código a continuación y ejecútelo:

public class ListExample {

    public static void main(String[] args) {
        List<String> myList = new ArrayList<String>();
        myList.add("one");
        myList.add("two");
        myList.add("three");
        myList.add("four");
        myList.add("five");

        System.out.println("Inserted in 'order': ");
        printList(myList);
        System.out.println("\n");
        System.out.println("Inserted out of 'order': ");

        // Clear the list
        myList.clear();

        myList.add("four");
        myList.add("five");
        myList.add("one");
        myList.add("two");
        myList.add("three");

        printList(myList);
    }

    private static void printList(List<String> myList) {
        for (String string : myList) {
            System.out.println(string);
        }
    }
}

Produce la siguiente salida:

Inserted in 'order': 
one
two
three
four
five


Inserted out of 'order': 
four
five
one
two
three

Para obtener información detallada, consulte la documentación: List (Java Platform SE7)

axcdnt
fuente
8
+1 por incluir un enlace al documento de Java que explica claramente que el pedido.
Ogre Psalm33
20
La salida de muestra sería útil
nilesh
1
Excelente ejemplo. +1 para esto.
Pawan Tiwari
123

. ArrayList es una lista secuencial . Entonces, el orden de inserción y recuperación es el mismo.

Si agrega elementos durante la recuperación , el orden no seguirá siendo el mismo.

Kalai Selvan Ravi
fuente
1
Si el OP "inserta" al final, también se llama agregar.
Peter Lawrey
2
la segunda declaración significa si durante el tiempo de recuperación por un hilo, otro hilo interviene para agregar un nuevo elemento. entonces el orden no permanece igual
xpioneer
38

Si siempre agrega al final, entonces cada elemento se agregará al final y permanecerá así hasta que lo cambie.

Si siempre inserta al principio, cada elemento aparecerá en el orden inverso al que los agregó.

Si los inserta en el medio, el orden será diferente.

Peter Lawrey
fuente
12

Sí, siempre será igual. De la documentación

Agrega el elemento especificado al final de esta lista. Parámetros: e elemento que se agregará a esta lista Devuelve: verdadero (según lo especificado por Collection.add (java.lang.Object))

add()Implementación de ArrayList

public boolean More ...add(E e) {
    ensureCapacity(size + 1);  // Increments modCount!!
    elementData[size++] = e;
    return true;
}
Eduardo Dennis
fuente
-1

Sí, sigue siendo el mismo. pero ¿por qué no probarlo fácilmente? ¡Haga una ArrayList, rellénela y luego recupere los elementos!

Mehsah Yhook
fuente
20
Sin embargo, eso no es prueba.
YoTengoUnLCD
1
El mismo orden es solo uno de los posibles resultados de la prueba. Si la implementación es caja negra, el mismo orden puede ser un caso específico. El ejemplo es una lista ordenada. Si agrega elementos a la lista ordenada en el orden adecuado, puede obtenerlos en orden ordenado (que es solo un caso particular), pero si los agrega en orden aleatorio, los ordenará. Probar ArrayList sin verificar la implementación solo indicará "lo más probable es que el orden sea el mismo".
simar