就地替換 List 元素

此示例是關於替換 List 元素,同時確保替換元素與替換元素位於相同位置。

這可以使用以下方法完成:

  • set(int index,T type)
  • int indexOf(T type)

考慮一個包含元素“程式開始!”,Hello World!ArrayList。和“再見世界!”

List<String> strings = new ArrayList<String>();
strings.add("Program starting!");
strings.add("Hello world!");
strings.add("Goodbye world!");

如果我們知道要替換的元素的索引,我們可以簡單地使用 set,如下所示:

strings.set(1, "Hi world");

如果我們不知道索引,我們可以先搜尋它。例如:

int pos = strings.indexOf("Goodbye world!");
if (pos >= 0) {
    strings.set(pos, "Goodbye cruel world!");
}

筆記:

  1. set 操作不會導致 ConcurrentModificationException
  2. set 的操作速度很快(O(1)),但是 LinkedList 的速度很慢(O(N))。
  3. ArrayListLinkedList 上搜尋 indexOf 的速度很慢(O(N))。