Ordem de inserção e recuperação de ArrayList

88

Suponha que eu insira 5 strings em um ArrayList. A ordem de inserção e recuperação do ArrayListserá a mesma?

divinedragon
fonte
88
Uma coisa é tentar uma vez. Outra é ter certeza de que será sempre igual.
Suragch

Respostas:

81

Verifique o código abaixo e execute-o:

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

Produz a seguinte saída:

Inserted in 'order': 
one
two
three
four
five


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

Para obter informações detalhadas, consulte a documentação: List (Java Platform SE7)

axcdnt
fonte
7
+1 por incluir um link para o documento Java que explica claramente que o pedido.
Ogre Salm33
20
A saída de amostra seria útil
nilesh
1
Excelente exemplo. 1 para isso.
Pawan Tiwari
123

Sim . ArrayList é uma lista sequencial . Portanto, a ordem de inserção e recuperação é a mesma.

Se você adicionar elementos durante a recuperação , a ordem não permanecerá a mesma.

Kalai Selvan Ravi
fonte
1
Se o OP "insere" no final, também é chamado de adição.
Peter Lawrey
2
a segunda instrução significa que se durante o tempo de recuperação por um thread outro thread intervém para adicionar um novo elemento. então a ordem não permanece a mesma
xpioneer
38

Se você sempre adicionar ao final, cada elemento será adicionado ao final e permanecerá assim até que você o altere.

Se você sempre inserir no início, cada elemento aparecerá na ordem inversa em que você os adicionou.

Se você inseri-los no meio, a ordem será outra.

Peter Lawrey
fonte
12

Sim, sempre será o mesmo. Da documentação

Acrescenta o elemento especificado ao final desta lista. Parâmetros: elemento e a ser acrescentado a esta lista Retorna: verdadeiro (conforme especificado por Collection.add (java.lang.Object))

add()Implementação de ArrayList

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

Sim, continua o mesmo. mas por que não testá-lo facilmente? Faça um ArrayList, preencha-o e recupere os elementos!

Mehsah Yhook
fonte
19
Porém, isso não é prova.
YoTengoUnLCD
1
A mesma ordem é apenas um dos possíveis resultados do teste. Se a implementação for caixa preta, a mesma ordem pode ser um caso específico. O exemplo é uma lista classificada. Se você adicionar elementos à lista classificada na ordem correta, você pode obtê-los em ordem classificada (que é apenas um caso particular), mas se você adicioná-los em ordem aleatória, você os obtém ordenados. Testar ArrayList sem verificar a implementação apenas indicará "muito provavelmente a ordem é a mesma".
simar