Thứ tự chèn và truy xuất ArrayList


88

Giả sử tôi chèn 5 chuỗi trong một ArrayList. Thứ tự chèn và truy xuất ArrayListcó giống nhau không?


88
Đó là một điều để thử nó một lần. Đó là một điều khác để chắc chắn rằng nó sẽ giống nhau mọi lúc.
Suragch

Câu trả lời:


82

Kiểm tra mã bên dưới và chạy nó:

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

Tạo ra kết quả sau:

Inserted in 'order': 
one
two
three
four
five


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

Để biết thông tin chi tiết, vui lòng tham khảo tài liệu: List (Java Platform SE7)


8
+1 để bao gồm một liên kết đến tài liệu Java giải thích rõ ràng rằng thứ tự.
Ogre Psalm33

20
Đầu ra mẫu sẽ hữu ích
nilesh

1
Ví dụ xuất sắc. +1 cho điều này.
Pawan Tiwari

123

Vâng . ArrayList là một danh sách tuần tự . Vì vậy, thứ tự chèn và truy xuất là như nhau.

Nếu bạn thêm các phần tử trong quá trình truy xuất , thứ tự sẽ không được giữ nguyên.


1
Nếu OP "chèn" vào cuối, còn được gọi là thêm.
Peter Lawrey

2
câu lệnh thứ hai có nghĩa là nếu trong thời gian truy xuất bởi một luồng, một luồng khác sẽ can thiệp để thêm một phần tử mới. thì thứ tự không vẫn như cũ
xpioneer

38

Nếu bạn luôn thêm vào cuối, thì mỗi phần tử sẽ được thêm vào cuối và giữ nguyên như vậy cho đến khi bạn thay đổi.

Nếu bạn luôn chèn khi bắt đầu, thì mỗi phần tử sẽ xuất hiện theo thứ tự ngược lại mà bạn đã thêm chúng.

Nếu bạn chèn chúng vào giữa, thứ tự sẽ là thứ khác.


12

Vâng, nó sẽ luôn luôn như vậy. Từ tài liệu

Thêm phần tử được chỉ định vào cuối danh sách này. Tham số: phần tử e được thêm vào danh sách này Trả về: true (như được chỉ định bởi Collection.add (java.lang.Object))

add()Triển khai ArrayList

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

-1

Vâng, nó vẫn như cũ. nhưng tại sao không dễ dàng kiểm tra nó? Tạo một ArrayList, điền vào nó và sau đó truy xuất các phần tử!


20
Đó là không có bằng chứng mặc dù.
YoTengoUnLCD

1
Thứ tự tương tự chỉ là một trong những kết quả có thể có của thử nghiệm. Nếu triển khai là hộp đen, cùng một thứ tự có thể là trường hợp cụ thể. Ví dụ là danh sách được sắp xếp. Nếu bạn thêm các phần tử vào danh sách được sắp xếp theo thứ tự thích hợp, bạn có thể lấy chúng theo thứ tự đã sắp xếp (đây chỉ là một trường hợp cụ thể), nhưng nếu bạn thêm chúng theo thứ tự ngẫu nhiên, bạn sẽ có được chúng theo thứ tự. Kiểm tra ArrayList mà không kiểm tra việc thực hiện sẽ chỉ nói rằng "hầu hết các thứ tự có thể giống nhau".
simar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.