题 ArrayList插入和检索顺序


假设我插入了5个字符串 ArrayList。将插入和检索的顺序 ArrayList 是相同的?


61
2017-07-04 15:04


起源


尝试一次是一回事。另一个是确保它每次都是一样的。 - Suragch


答案:


检查下面的代码并运行它:

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)


48
2017-07-04 15:15



谢谢。代码片段在执行时会清楚地解释它。 - divinedragon
+1包含指向Java文档的链接,清楚地解释了订购。 - Ogre Psalm33
样本输出很有用 - nilesh


。 ArrayList是一个 顺序列表。因此,插入和检索顺序是相同的。

如果添加元素 在检索期间,订单不会保持不变。


96
2017-07-04 15:06



如果OP在末尾“插入”,也称为添加。 - Peter Lawrey
@Kalai非常奇怪的建议部分“......或结束” - Ray
第二个陈述对我来说不清楚! - Adil


如果你总是添加到最后,那么每个元素都会被添加到最后并保持这种状态直到你改变它。

如果始终在开头插入,则每个元素将按照添加它们的相反顺序显示。

如果您将它们插入中间,则订单将是其他内容。


33
2017-07-04 15:06





是的,它总是一样的。来自 文件

将指定的元素追加到此列表的末尾。参数:e   要附加到此列表的元素返回:true(由。指定)   Collection.add(java.lang.Object中))

数组列表 add() 履行

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

6
2018-03-14 16:27





是的,它仍然是一样的。 但为什么不轻易测试呢?创建一个ArrayList,填充它然后检索元素!


0
2017-07-04 15:12



这不是证据。 - YoTengoUnLCD
相同的顺序只是测试的可能结果之一。如果实现是blackbox,则相同的顺序可能是特定情况。示例是排序列表。如果按正确的顺序将元素添加到排序列表中,您可以按排序顺序获取它们(这只是一个特例),但如果您按随机顺序添加它们,则会对它们进行排序。在没有检查实现的情况下测试ArrayList只会说“最有可能的顺序是相同的”。 - simar