Java collections framework: Iterator interface và ListIterator interface

Đây là bài 47/62 bài của series môn học Ngôn ngữ lập trình Java

1. Iterator interface trong Java

Iterator interface của Java collections framework cho phép chúng ta truy cập các phần tử trong các cấu trúc dữ liệu (data structure). Nó có một interface con là ListIterator.

ListIterator interface kế thừa Iterator interface

Tất cả các lớp trong Java collections framework đều bao gồm phương thức iterator(). Phương thức này sẽ trả về một đối tượng của một lớp kế thừa từ Iterator interface để truy cập các phần trong data structure.

Các phương thức của Iterator interface

Iterator interface cung cấp 4 phương thức để thao tác với các phần tử trong một data structure:

  • hasNext() trả về true nếu vẫn còn phần tử trong data structure
  • next() trả về phần tử kế tiếp trong data structure
  • remove() loại bỏ phần tử cuối cùng được trả về bởi hàm next()
  • forEachRemaining() thực hiện xử lý với mỗi phần tử trong data structure truy cập được

Ví dụ sử dụng Iterator interface

import java.util.ArrayList;
import java.util.Iterator;
class Main {
    public static void main(String[] args) {
        //Tạo một ArrayList
        ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(3);
        numbers.add(2);
        System.out.println("ArrayList: " + numbers);

        //Tạo ra một đối tượng Iterator
        Iterator<Integer> iterate = numbers.iterator();

        //Sử dụng phương thức next()
        int number = iterate.next();
        System.out.println("Accessed Element: " + number);

        //Sử dụng phương thức remove()
        iterate.remove();
        System.out.println("Removed Element: " + number);

        System.out.print("Updated ArrayList: ");
        //Sử dụng phương thức hasNext()
        while(iterate.hasNext()) {
            //Sử dụng phương thức forEachRemaining()
            iterate.forEachRemaining((value) -> System.out.print(value + ", "));
        }
    }
}
Kết quả
ArrayList: [1, 3, 2]
Accessed Element: 1
Removed Element: 1
Updated ArrayList: 3, 2,

2. ListIterator interface trong Java

ListIterator interface giúp truy cập các phần tử trong một danh sách (list). Đặc điểm của ListIterator interface là có thể truy cập đến phần tử trước và sau của phần tử đang xem xét.

Các cấu trúc dữ liệu dạng list như ArrayList sẽ có một hàm listIterator() để trả về một đối tượng kế thừa ListIterator để truy cập các phần tử trong list.

Các phương thức của ListIterator interface

ListIterator interface kế thừa Iterator interface nên nó sẽ có các hàm của Iterator interface. Và ListItertor interface cũng sẽ có những hàm khác:

  • hasNext() trả về true nếu vẫn còn phần tử trong list
  • next() trả về phần tử kế tiếp trong list
  • nextIndex() trả về chỉ số (index) của phần tử kế tiếp trong list mà hàm next() trả về
  • previous() trả về phần tử trước đó của phần tử đang truy cập trong list
  • previousIndex() trả về chỉ số (index) của phần tử trước đó của phần tử đang truy cập trong list mà hàm previous() trả về
  • remove() xóa phần tử được trả về bởi hàm next() hoặc previous()
  • set() thay thế phần tử được trả về bởi hàm next() hoặc previous() bằng một phần tử cụ thể nào đó

Ví dụ sử dụng ListIterator interface

import java.util.ArrayList;
import java.util.ListIterator;
class Main {
    public static void main(String[] args) {
        //Tạo một ArrayList
        ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(3);
        numbers.add(2);
        System.out.println("ArrayList: " + numbers);

        //Tạo một đối tượng có kiểu ListIterator
        ListIterator<Integer> iterate = numbers.listIterator();

        //Sử dụng hàm next()
        int number1 = iterate.next();
        System.out.println("Next Element: " + number1);

        //Sử dụng hàm nextIndex()
        int index1 = iterate.nextIndex();
        System.out.println("Position of Next Element: " + index1);

        //Sử dụng hàm hasNext()
        System.out.println("Is there any next element? " + iterate.hasNext());
    }
}
Kết quả
ArrayList: [1, 3, 2]
Next Element: 1
Position of Next Element: 1
Is there any next element? true
Mời bạn đánh giá bài viết
Bài trước và bài sau trong môn học<< Java collections framework: Set interface và lớp HashSetLớp InputStream và OutputStream trong Java >>
Chia sẻ trên mạng xã hội:

Tác giả Vinh Lê

Vinh Lê hiện đang là biên tập viên tại Góc Học IT.

Bài viết của Vinh Lê

Trả lời

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.