Sửa danh sách với ListIterator

Nhập/Xuất và Streams trong Java

Alex Liu

Software Development Engineer

Iterator vs ListIterator

So sánh giữa Iterator và ListIterator

Nhập/Xuất và Streams trong Java

ArrayList mẫu

import java.util.ArrayList;
public class SampleData {
    public static void main(String[] args) {
        ArrayList<String> names = new ArrayList<>();
        names.add("Alice");
        names.add("Bob");
        names.add("Charlie");
    }
}  
[Alice, Bob, Charlie]
Nhập/Xuất và Streams trong Java

Duyệt danh sách với ListIterator

// Import lớp ListIterator
import java.util.ListIterator;

// Tạo ListIterator cho danh sách mẫu `names` ListIterator<String> it = names.listIterator(); // Dùng .hasNext() và `.next()` để duyệt và in từng dòng while (it.hasNext()) { System.out.println(it.next()); }
Alice 
Bob 
Charlie
Nhập/Xuất và Streams trong Java

Di chuyển lùi với ListIterator

  • Dùng .previous() để lùi trong danh sách
// Tạo ListIterator cho danh sách mẫu `names`
ListIterator<String> it = names.listIterator(names.size());
// Dùng .hasPrevious() để kiểm tra đã về đầu danh sách chưa
while (it.hasPrevious()) {
    // Dùng .previous() để lấy phần tử theo thứ tự ngược
    System.out.println(it.previous());}
  • In theo thứ tự ngược, đầu ra:
Charlie
Bob
Alice
Nhập/Xuất và Streams trong Java

Sửa phần tử khi duyệt

  • Dùng phương thức .set()
// Tạo ListIterator cho danh sách names
ListIterator<String> it = names.listIterator();

// Duyệt và sửa phần tử bằng .set() while (it.hasNext()) { String name = it.next(); if ("Bob".equals(name)) it.set("Bobby"); }
  • Danh sách names sau khi cập nhật:
[Alice, Bobby, Charlie]
Nhập/Xuất và Streams trong Java

Thêm phần tử khi duyệt

  • Dùng .add() để thêm phần tử
ListIterator<String> it = names.listIterator();

// Duyệt danh sách và chèn phần tử bằng .add() while (it.hasNext()) { String name = it.next(); if ("Charlie".equals(name)) it.add("David"); }
  • Danh sách names sau khi cập nhật:
    [Alice, Bobby, Charlie, David]
    
Nhập/Xuất và Streams trong Java

Tóm tắt

  • ListIterator mở rộng Iterator
    • Hỗ trợ duyệt tiến và lùi
    • Cho phép sửa khi đang duyệt
  • Tóm tắt phương thức chính

    • .next()/.previous(): Đi tới/lùi
    • .set(): Sửa phần tử hiện tại
    • .add(): Chèn động phần tử
    • .remove(): Xóa an toàn
    • Chỉ dùng cho List (ArrayList, LinkedList, ...)
Nhập/Xuất và Streams trong Java

Ayo berlatih!

Nhập/Xuất và Streams trong Java

Preparing Video For Download...