Cách duyệt mảng với Loop và Iterator có gì khác nhau

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

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))

1 Like

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:

3 Likes

Đú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:

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?