Rumah  >  Artikel  >  Java  >  Mengapakah saya tidak boleh mengakses ruang yang diperuntukkan dalam ArrayList apabila menentukan saiz awal?

Mengapakah saya tidak boleh mengakses ruang yang diperuntukkan dalam ArrayList apabila menentukan saiz awal?

DDD
DDDasal
2024-11-03 15:25:30811semak imbas

Why can't I access allocated spaces in an ArrayList when specifying an initial size?

Memahami Kapasiti ArrayList vs. Saiz

S: Mengapa anda tidak boleh pada mulanya mengakses ruang yang diperuntukkan untuk ArrayList jika anda menentukan saiz awal ?

J: Kekeliruan timbul akibat salah faham perbezaan antara saiz dan kapasiti ArrayList.

Saiz ArrayList menandakan bilangan elemen yang terkandung di dalamnya, manakala kapasiti mewakili maksimum bilangan elemen yang boleh disimpan sebelum perlu memperuntukkan lebih banyak memori. Menetapkan kapasiti awal mengoptimumkan prestasi dengan pra-peruntukkan ruang untuk bilangan elemen tertentu, tetapi ia tidak mengisi senarai secara automatik dengan elemen sebanyak itu.

Sebagai contoh, apabila anda mencipta ArrayList dengan kapasiti awal daripada 10, senarai itu pada mulanya kosong dan cuba menambah elemen pada indeks 10 akan menghasilkan pengecualian di luar sempadan.

Untuk menambah elemen pada ArrayList, anda perlu menggunakan kaedah tambah, dengan menyatakan indeks di mana elemen harus dimasukkan. Jika anda ingin mengisi senarai dengan 10 elemen, anda boleh menggunakan gelung:

for (int i = 0; i < 10; i++) {
  arr.add(0);
}

Dengan menggunakan teknik ini, anda boleh menambah 10 elemen dan kemudian memanipulasinya pada indeks 0 hingga 9 tanpa isu sempadan.

Atas ialah kandungan terperinci Mengapakah saya tidak boleh mengakses ruang yang diperuntukkan dalam ArrayList apabila menentukan saiz awal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn