Załóżmy, że wstawiam 5 ciągów do pliku ArrayList
. Czy kolejność wstawiania i pobierania z pliku ArrayList
będzie taka sama?
java
collections
divinedragon
źródło
źródło
Odpowiedzi:
Sprawdź poniższy kod i uruchom go:
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); } } }
Daje następujący wynik:
Inserted in 'order': one two three four five Inserted out of 'order': four five one two three
Szczegółowe informacje można znaleźć w dokumentacji:
List (Java Platform SE7)
źródło
Tak . ArrayList to lista sekwencyjna . Tak więc kolejność wstawiania i pobierania jest taka sama.
Jeśli dodasz elementy podczas pobierania , kolejność nie pozostanie taka sama.
źródło
Jeśli zawsze dodajesz na końcu, każdy element zostanie dodany na końcu i pozostanie taki, dopóki go nie zmienisz.
Jeśli zawsze wstawiasz na początku, każdy element pojawi się w odwrotnej kolejności, w jakiej go dodałeś.
Jeśli wstawisz je na środku, kolejność będzie inna.
źródło
Tak, zawsze będzie tak samo. Z dokumentacji
add()
Implementacja ArrayListpublic boolean More ...add(E e) { ensureCapacity(size + 1); // Increments modCount!! elementData[size++] = e; return true; }
źródło
Tak, pozostaje to samo. ale dlaczego nie łatwo go przetestować? Utwórz ArrayList, wypełnij ją, a następnie pobierz elementy!
źródło