Порядок вставки и извлечения ArrayList


88

Предположим, я вставляю 5 строк в файл ArrayList. Будет ли порядок вставки и извлечения из файла ArrayListодинаковым?


88
Одно дело попробовать хоть раз. Другое дело - быть уверенным, что каждый раз будет одно и то же.
Suragch

Ответы:


82

Проверьте приведенный ниже код и запустите его:

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

Производит следующий вывод:

Inserted in 'order': 
one
two
three
four
five


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

Для получения подробной информации обратитесь к документации: List (Java Platform SE7)


8
+1 за ссылку на документ Java, в котором четко объясняется, что файл ordering.
Ogre Psalm33

20
Был

1
Отличный пример. +1 за это.
Паван Тивари

123

Да . ArrayList - это последовательный список . Итак, порядок вставки и извлечения такой же.

Если вы добавите элементы во время поиска , порядок не останется прежним.


1
Если OP «вставляет» в конце, это также называется добавлением.
Питер Лоури 04

2
второй оператор означает, что во время извлечения одним потоком другой поток вмешивается, чтобы добавить новый элемент. то порядок не остается прежним
xpioneer

38

Если вы всегда добавляете в конец, то каждый элемент будет добавлен в конец и останется таким, пока вы его не измените.

Если вы всегда вставляете в начале, то каждый элемент будет отображаться в обратном порядке, в котором вы их добавляли.

Если вставить их посередине, порядок будет другой.


12

Да, всегда будет так. Из документации

Добавляет указанный элемент в конец этого списка. Параметры: элемент e, который будет добавлен в этот список. Возвращает: true (как указано в Collection.add (java.lang.Object))

add()Реализация ArrayList

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

-1

Да, остается прежним. но почему бы просто не проверить это? Создайте ArrayList, заполните его, а затем извлеките элементы!


20
Но это не доказательство.
YoTengoUnLCD

1
Такой же порядок - это лишь один из возможных результатов теста. Если реализация - черный ящик, такой же порядок может быть конкретным случаем. Пример - отсортированный список. Если вы добавляете элементы в отсортированный список в правильном порядке, вы можете получить их в отсортированном порядке (что является просто частным случаем), но если вы добавляете их в случайном порядке, вы получаете их в порядке. При тестировании ArrayList без проверки реализации будет указано, что «скорее всего порядок такой же».
simar 07
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.