簡體   English   中英

為什么 LinkedList 的 remove 方法不會發生 ConcurrentModificationException?

[英]Why doesn't ConcurrentModificationException happen with remove method of LinkedList?

Deque<Employee> employeeDeque = new LinkedList<>();
        employeeDeque.offerLast(new Employee("Michael", 250));
        employeeDeque.offerLast(new Employee("John", 250));
            Iterator iterator = employeeDeque.iterator();
        while (iterator.hasNext()) {
            iterator.next();
            employeeDeque.remove(new Employee("Michael", 250));
    }

與 ArrayList 相同的代碼會產生此異常,但在 LinkedList 上刪除不會。 為什么會這樣? Add() 和 Offer() 方法仍然產生它。

LinkedListJavadoc說,

請注意,不能保證迭代器的快速失敗行為……快速失敗的迭代器會在盡力而為的基礎上拋出ConcurrentModificationException

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM