就地替換 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!");
}
筆記:
set
操作不會導致ConcurrentModificationException
。set
的操作速度很快(O(1)
),但是LinkedList
的速度很慢(O(N)
)。- 在
ArrayList
或LinkedList
上搜尋indexOf
的速度很慢(O(N)
)。