2012-07-04 19 views
56

假設我在ArrayList中插入5個字符串。從ArrayList插入和檢索的順序是否相同?ArrayList插入和檢索順序

+15

你爲什麼不嘗試一下並找出答案? –

+77

嘗試一次是一回事。確保每次都是一樣的是另一回事。 – Suragch

回答

45

檢查下面的代碼並運行它:

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)

+0

謝謝。代碼片段在執行時可以清楚地解釋它。 – divinedragon

+5

+1包含指向Java文檔的鏈接,該鏈接清楚地說明了排序。 –

+15

示例輸出將很有用 – nilesh

89

。 ArrayList是一個順序列表。所以,插入和檢索順序是一樣的。

如果您在檢索期間添加元素,訂單將不會保持不變。

+0

如果OP在結尾處「插入」,也稱爲添加。 –

+3

@Kalai非常奇怪的建議部分「....或結束」 – Ray

+9

第二種說法對我來說還不清楚! – Adil

33

如果您總是添加到最後,那麼每個元素都會添加到最後並保持這種狀態,直到您更改它爲止。

如果您總是在開始時插入,則每個元素都會以與您添加它們相反的順序出現。

如果你在中間插入它們,順序將是別的。

0

是的,它保持不變。 但爲什麼不輕鬆測試呢?創建一個ArrayList,填充它,然後檢索元素!

+13

雖然沒有證據。 – YoTengoUnLCD

+0

相同的順序只是可能的測試結果之一。如果實施是黑匣子,則相同的順序可能是特定情況。示例是排序列表。如果按順序將元素添加到排序列表中,則可以按排序順序(這只是特定情況)獲取它們,但如果以隨機順序添加它們,則可以按順序添加它們。在不檢查實現的情況下測試ArrayList只會聲明「最可能的順序是相同的」。 – simar

6

是的,它總是會是相同的。來自documentation

將指定的元素附加到此列表的末尾。參數:e 元素被添加到這個列表返回:true(根據 Collection.add(java.lang.Object中指定))

的ArrayList add()實施

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