Nội dung chính
Iterator interface
Iterator trong Java là một interface được sử dụng để thay thế Enumerations trong Java Collection Framework. Bạn có thể sử dụng interator để:
- Duyệt các phần tử từ đầu đến cuối của một collection.
- Iterator cho phép xóa phần tử khi lặp một collection.
Các phương thức của Iterator trong Java
Có ba phương thức trong Iterator như sau:
Phương thức | Mô tả |
---|---|
public boolean hasNext() | Nó trả về true nếu iterator còn phần tử kế tiếp phần tử đang duyệt. |
public object next() | Nó trả về phần tử hiện tại và di chuyển con trỏ trỏ tới phần tử tiếp theo. |
public void remove() | Nó loại bỏ phần tử cuối được trả về bởi Iterator. Nó hiếm khi được sử dụng. |
ListIterator interface
Đối với các collections mà implement List, bạn cũng có thể sử dụng iterator bằng cách gọi ListIterator.
Các phương thức của ListIterator trong Java
Phương thức | Mô tả |
---|---|
public void add(Object obj) | Chèn obj vào phía trước phần tử sẽ được trả về bởi lệnh gọi tiếp theo tới next(). |
public boolean hasNext() | Trả về true nếu có phần tử tiếp theo. Nếu không, trả về false. |
public boolean hasPrevious() | Trả về true nếu có phần tử trước. Nếu không, trả về false. |
public Object next() | Trả về phần tử tiếp theo. Một NoSuchEuityException được ném nếu không có phần tử tiếp theo. |
public int nextIndex() | Trả về chỉ mục của phần tử tiếp theo. Nếu không có phần tử tiếp theo, trả về kích thước của danh sách. |
public Object previous() | Trả về phần tử trước. Một NoSuchEuityException được ném nếu không có phần tử trước đó. |
public int previousIndex() | Trả về chỉ mục của phần tử trước. Nếu không có phần tử trước, trả về -1. |
public void remove() | Loại bỏ các phần tử hiện tại khỏi danh sách. Một IllegalStateException được ném nếu remove() được gọi trước next() hoặc trước previous(). |
public void set(Object obj) | Chỉ định obj cho phần tử hiện tại. Đây là phần tử được trả về lần cuối bởi một lệnh gọi tới next() hoặc previous(). |
Sử dụng Iterator trong Java
Dưới đây là một ví dụ minh họa sử dụng Iterator và ListIterator trong Java. Nó sử dụng một đối tượng ArrayList.
ListIterator chỉ khả dụng cho những collections implement List.
package vn.viettuts; import java.util.ArrayList; import java.util.Iterator; import java.util.ListIterator; public class IteratorDemo { public static void main(String args[]) { ArrayList listLanguages = new ArrayList(); // them phan tu vao array list listLanguages.add("Java"); listLanguages.add("Python"); listLanguages.add("PHP"); listLanguages.add(".NET"); listLanguages.add("C"); listLanguages.add("C++"); // su dung iterator de hien thi noi dung cua listLanguages System.out.println("Danh sach ngon ngu lap trinh: "); Iterator itr = listLanguages.iterator(); while (itr.hasNext()) { Object element = itr.next(); System.out.println(element); } System.out.println(); // sua cac phan tu duoc lap ListIterator litr = listLanguages.listIterator(); while (litr.hasNext()) { Object element = litr.next(); litr.set(element + " (PASS)"); } System.out.println("Noi dung da duoc sua cua listLanguages: "); itr = listLanguages.iterator(); while (itr.hasNext()) { Object element = itr.next(); System.out.println(element); } System.out.println(); // hien thi cac phan tu theo thu tu nguoc lai System.out.println("Noi dung da duoc sua cua listLanguages " + "theo thu tu nguoc lai: "); while (litr.hasPrevious()) { Object element = litr.previous(); System.out.println(element); } System.out.println(); // xoa phan tu C (PASS) litr = listLanguages.listIterator(); while (litr.hasNext()) { Object element = litr.next(); if ("C (PASS)".equals(element.toString())) { litr.remove(); } } System.out.println("Noi dung da duoc sua cua listLanguages: "); itr = listLanguages.iterator(); while (itr.hasNext()) { Object element = itr.next(); System.out.println(element); } System.out.println(); } }
Kết quả:
Danh sach ngon ngu lap trinh: Java Python PHP .NET C C++ Noi dung da duoc sua cua listLanguages: Java (PASS) Python (PASS) PHP (PASS) .NET (PASS) C (PASS) C++ (PASS) Noi dung da duoc sua cua listLanguages theo thu tu nguoc lai: C++ (PASS) C (PASS) .NET (PASS) PHP (PASS) Python (PASS) Java (PASS) Noi dung da duoc sua cua listLanguages: Java (PASS) Python (PASS) PHP (PASS) .NET (PASS) C++ (PASS)