Hỏi về Iterator trong java

package Javanangcao;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class IteratorDemo {

	public static void main(String[] args) {
		List<String> list = new ArrayList<String>();

		list.add("A");
		list.add("B");
		list.add("C");
		list.add("D");
		list.add("E");

		Iterator<String> itr = list.iterator();

		while (itr.hasNext()) {
			System.out.println(itr.next());
		}

		while (itr.hasNext()) {
			if (itr.next().equals("A")) {
				itr.remove();
			}
		}

		for (String s : list) {
			System.out.println(s);
		}
	}

}

các bác cho hỏi chút. e muốn dùng Iterator để xóa phần từ equals “A”, nhưng ko biết sai ở đâu mà khi chạy trương trình nó vẫn in ra list có cả A,B,C,D,E.
Nhưng nếu e comment phần

while (itr.hasNext()) {
    System.out.println(itr.next());
}

Thì lại xóa được nhỉ?

itr.hasNext() Trả về true nếu có nhiều phần tử .Trong vòng while đầu tiên bạn đã duyệt hết phần tử rồi nên xuống vòng while thứ 2 thì nó sẽ trả về false nó ko chạy vào hàm đó nữa nên bạn không xóa được.Vì thế khi bạn bỏ vòng while đầu đi bạn sẽ xóa được

1 Like

vậy Iterator kiểu như là chỉ dùng đc 1 lần thôi à bác

vì 2 cái vòng while đó dùng vào một hàm được mà tự nhiên lại tách ra một hàm chỉ để in ra làm gì .Bỏ tất cả cái chỗ xử lý vào một vòng while kia thôi .Chứ có ai xử lý ra 2 hàm riêng biệt như vậy làm gì đâu

Hì, thanks bác, vì e mới học nên muốn hiểu bản chất 1 tí bác ạ.

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