การแทรก ArrayList และลำดับการดึงข้อมูล


90

สมมติว่าฉันใส่ 5 สตริงในArrayListไฟล์. ลำดับการแทรกและการดึงข้อมูลArrayListจะเหมือนกันหรือไม่?


90
เป็นสิ่งหนึ่งที่ควรลองดูสักครั้ง เป็นอีกหนึ่งที่มั่นใจได้ว่าจะต้องเหมือนเดิมทุกครั้ง
Suragch

คำตอบ:


85

ใช่ ArrayList เป็นคอลเลกชันที่ได้รับคำสั่งซื้อและยังคงรักษาลำดับการแทรก

ตรวจสอบรหัสด้านล่างและเรียกใช้:

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)


9
+1 สำหรับการรวมลิงก์ไปยังเอกสาร Java ที่อธิบายอย่างชัดเจนว่าการสั่งซื้อ
Ogre Psalm33

21
ตัวอย่างผลลัพธ์จะเป็นประโยชน์
nilesh

1
ตัวอย่างที่ยอดเยี่ยม +1 สำหรับสิ่งนี้
ทิวา

ตัวอย่างไม่ใช่ข้อพิสูจน์ แต่ลิงค์คือ
โยนี

124

ครับ . ArrayList เป็นรายการลำดับ ลำดับการแทรกและการดึงข้อมูลจึงเหมือนกัน

หากคุณเพิ่มองค์ประกอบระหว่างการดึงข้อมูลลำดับจะไม่เหมือนเดิม


1
ถ้า OP "แทรก" ในตอนท้ายเรียกอีกอย่างว่าการเพิ่ม
Peter Lawrey

2
คำสั่งที่สองหมายถึงถ้าในช่วงเวลาของการดึงโดยเธรดหนึ่งเธรดอื่นแทรกแซงเพื่อเพิ่มองค์ประกอบใหม่ คำสั่งซื้อจะไม่เหมือนเดิม
xpioneer

38

หากคุณเพิ่มไปที่ส่วนท้ายเสมอองค์ประกอบแต่ละรายการจะถูกเพิ่มเข้าไปในตอนท้ายและอยู่ในลักษณะนั้นจนกว่าคุณจะเปลี่ยน

หากคุณแทรกที่จุดเริ่มต้นเสมอองค์ประกอบแต่ละรายการจะปรากฏในลำดับย้อนกลับที่คุณเพิ่มเข้าไป

หากคุณแทรกไว้ตรงกลางคำสั่งจะเป็นอย่างอื่น


12

ใช่มันจะเหมือนเดิมเสมอไป จากเอกสารประกอบ

ต่อท้ายองค์ประกอบที่ระบุต่อท้ายรายการนี้ พารามิเตอร์: องค์ประกอบ e ที่จะต่อท้ายรายการนี้ Returns: 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
ลำดับเดียวกันเป็นเพียงหนึ่งในผลการทดสอบที่เป็นไปได้ หากการใช้งานเป็น blackbox ลำดับเดียวกันอาจเป็นกรณีเฉพาะ ตัวอย่างคือรายการที่จัดเรียง หากคุณเพิ่มองค์ประกอบในรายการที่จัดเรียงตามลำดับที่เหมาะสมคุณจะได้รับองค์ประกอบเหล่านั้นตามลำดับที่เรียงกัน (ซึ่งเป็นเพียงกรณีเฉพาะ) แต่ถ้าคุณเพิ่มองค์ประกอบในลำดับแบบสุ่มคุณจะได้รับคำสั่ง การทดสอบ ArrayList โดยไม่ตรวจสอบการนำไปใช้งานจะระบุเพียงว่า
simar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.