Порядок вставки и извлечения 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)

axcdnt
источник
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