Xin hướng dẫn cách dùng phương thức .next() và .previous() trong Iterator?

import java.util.ArrayList;
import java.util.ListIterator;

public class DayNhauHoc {
	public static void main(String[] args) {

		ArrayList<Integer> ls = new ArrayList<Integer>();
		ls.add(1);
		ls.add(2);
		ls.add(6);
	 		
		int result = 0;
		int i = 2;

		ListIterator<Integer> listIter = ls.listIterator();

		while (listIter.hasNext()) {
			if (listIter.next() == i) {
				result = listIter.previous();
				break;
			}
		}
		System.out.println(result);
	}
}  ===========> kết quả console ra 2

cho e hỏi khi listIter.hasNext() ra true thì listIter.next() ra 2 còn listIter.previous() lùi lại một phần tử thì kết quả phải ra 1 . e không hiểu nó bắt đầu chạy từ đâu và sau khi thực hiện phương thức .next() hoặc .previous() thì nó đứng ở vị trí nào ! đây là code e tự nghĩ ra VD thôi :((

Cách bố trí con trỏ đặc biệt (có n+1 con trỏ):

                      Phần tử(0)   Phần tử(1)   Phần tử(2)   ...   Phần tử(n-1)
Vị trí con trỏ:     ^            ^            ^            ^     ^              ^
                    -1           0            1            2    n-2            n-1

Tức con trỏ không chỉ vào phần tử nào. Khi đi qua phần tử nào nó sẽ chọn phần tử đó.
Khi gọi Iterator.next() và gọi Iterator.previous() ngay sau nó thì con trỏ cùng đi qua 1 phần tử giống nhau mặc dù vị trí con trỏ đã thay đổi.

Tham khảo:
https://docs.oracle.com/javase/7/docs/api/java/util/ListIterator.html

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