Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Xóa sublist khỏi ArrayList trong Java: 2 cách

Để xóa một đoạn liên tiếp trong ArrayList, có 2 phương pháp chính:

Cách 1: subList() + clear() – Khuyên dùng

subList(from, to) trả về view của đoạn [from, to), gọi clear() trên view sẽ xóa khỏi list gốc.


import java.util.ArrayList;

public class RemoveSubListDemo {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>(
            Arrays.asList("A", "B", "C", "D", "E", "F", "G", "H")
        );
        System.out.println("Trước: " + list);
        
        // Xóa từ index 2 đến 5 (C, D, E, F)
        list.subList(2, 6).clear();
        
        System.out.println("Sau:   " + list);
    }
}

Kết quả


Trước: [A, B, C, D, E, F, G, H]
Sau:   [A, B, G, H]

Cách 2: removeRange() – Chỉ dùng trong subclass

removeRange() là protected của AbstractList, chỉ truy cập được khi extends ArrayList.


class MyList<E> extends ArrayList<E> {
    public void removeRangePublic(int from, int to) {
        super.removeRange(from, to); // gọi protected method
    }
}

// Sử dụng:
MyList<String> list = new MyList<>();
list.addAll(Arrays.asList("A","B","C","D","E","F","G","H"));
list.removeRangePublic(2, 6); // xóa C,D,E,F

So sánh

Tiêu chísubList().clear()removeRange()
Cần extends?KhôngCó
Hiệu năngTốt (dịch chuyển 1 lần)Tốt (internal)
An toànView có thể invalid nếu sửa list gốc khi đang iterateAn toàn hơn

Khuyến nghị: Dùng subList(from, to).clear() cho code thông thường.