What's meant by parameter (int initial capacity) in an arraylist

ArrayList<Integer> arr = new ArrayList<>(100);
Đối với câu lệnh trên trong Java thì khi ta truyền đối số 100 làm dung lượng ban đầu cho ArrayList. Vậy tại sao lại khi thực hiện câu lệnh:
arr.get(0); lại xảy ra lỗi ngoại lệ Exception: “IndexOutOfBoundsException”

Đối với mảng: Integer[] arr = new Interger[100]; thì khi mảng sẽ được khởi tạo giá trị mặc đinh từ chỉ số 0 tới 99 là null. Khi đó thực hiện câu lệnh: arr[0] lại có thể truy cập được mà không xảy ra ngoại lệ.

Các bạn giải thích giúp mình đối số: int initial capacity thực sự nó là gì vậy ạ ? Cảm ơn mọi người rất nhiều !!!

2 Likes

initialCapacity nghĩa là ArrayList được khởi tạo sẽ có thể chứa tối đa bao nhiêu phần tử trong khoảng index từ 0 đến initialCapacity - 1.

Còn về lỗi kia thì hàm get() chỉ cho phép lấy giá trị có index từ 0 đến không vượt quá size() (0 <= size() <= initialCapacity - 1). Mà ArrayList mới khởi tạo sẽ không đặt giá trị mặc định cho các phần tử nên ArrayList vẫn là rỗng (size() = 0).

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