Mình thấy người ta thường dùng Iterator để duyệt mảng trong Arraylist , vậy cách duyệt với loop và Iterator có gì khác nhau , ưu nhược là gì vậy
Cách duyệt mảng với Loop và Iterator có gì khác nhau
duyệt với Iterator cũng tương tự như dùng for( : )
Ưu điểm thì là code ngắn, phần tử được gán kiểu dữ liệu trực quan, nếu không cần quan tâm phần tử đó nằm ở đâu thì đỡ được 1 biến tạm (i
)
Nhược điểm là không thể gán reference mới cho phần tử đó (không như ArrayList.set(i, new Object)
)
Iterator là phần duyệt mảng có thể vừa duyệt vừa thêm hay xóa phần tử được. Các phần khác như for không thể làm được điều này.
Bạn có thể đọc thêm một số bài viết sau:
Đúng như @anon12276517 nói. Iterator có khả năng thêm/ xoá những phần từ tập hợp trong quá trình duyệt. Sử dụng for-each bạn không thể làm được điều này, sẽ phát sinh lỗi ConcurrentModificationException. Sử dụng for-index có thể thêm/ xóa được, nhưng có thể sẽ gặp lỗi khác là IndexOutOfBoundsException.
Bạn có thể tham khảo thêm ở bài viết bên dưới: