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?


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)


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.


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.


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;
}

-1

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


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.