web-dev-qa-db-fra.com

Ordre d'insertion et de récupération de ArrayList

Supposons que j'insère 5 chaînes dans un ArrayList. Est-ce que l'ordre d'insertion et de récupération à partir de ArrayList sera le même?

75
divinedragon

Vérifiez le code ci-dessous et lancez-le:

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

Produit la sortie suivante:

Inserted in 'order': 
one
two
three
four
five


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

Pour plus d'informations, reportez-vous à la documentation: List (Java Platform SE7)

67
axcdnt

Oui. ArrayList est un liste séquentielle. Ainsi, l'ordre d'insertion et de récupération est le même.

Si vous ajoutez des éléments pendant la récupération, la commande ne restera pas la même.

114
Kalai Selvan Ravi

Si vous ajoutez toujours à la fin, chaque élément sera ajouté à la fin et restera tel jusqu'à ce que vous le changiez.

Si vous insérez toujours au début, chaque élément apparaîtra dans l'ordre inverse de celui que vous avez ajouté.

Si vous les insérez au milieu, l'ordre sera différent.

38
Peter Lawrey

Oui, ce sera toujours la même chose. De la documentation

Ajoute l'élément spécifié à la fin de cette liste. Paramètres: e élément à ajouter à cette liste. Retour: true (comme spécifié par Collection.add (Java.lang.Object))

ArrayList add() implémentation

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