"Saya disini."

"Hai, Elli!"

"Hari ini kita akan membicarakan topik yang menarik. Saya akan memberi tahu Anda tentang kelas ArrayList ."

"Kelas baru? Keren! Apa fungsinya?"

"Mari saya mulai dengan cerita belakang. Satu-satunya hal yang tidak disukai programmer tentang array adalah Anda tidak dapat mengubah ukurannya. Apa yang Anda lakukan jika Anda perlu menambahkan tiga elemen lagi ke array yang hanya memiliki satu slot kosong? "

"Satu-satunya solusi untuk masalah ini adalah membuat larik yang sangat besar, untuk menjamin Anda memiliki cukup ruang untuk semua elemen. Namun, ini sering kali berarti memori terbuang percuma. Jika larik biasanya berisi tiga elemen, tetapi ada peluang terkecil sekalipun bahwa itu mungkin perlu mengakomodasi 100 elemen, Anda harus membuat larik 100 elemen."

"Jadi, apa yang dihasilkan oleh programmer?"

"Mereka menulis kelas ArrayList , yang melakukan hal yang sama seperti Array, tetapi dapat mengubah ukurannya."

"Langkah yang menarik. Bagaimana mereka melakukannya?"

"Setiap objek ArrayList menyimpan larik elemen biasa. Saat Anda membaca elemen dari ArrayList , ia membacanya dari larik dalamnya. Saat Anda menulisnya ke ArrayList , ia menulisnya ke larik dalamnya. Di sini, bandingkan kolom ini:"

Himpunan ArrayList
Buat wadah untuk elemen
String[] list = new String[10];
ArrayList<String> list = new ArrayList<String>();
Dapatkan jumlah elemen
int n = list.length;
int n = list.size();
Dapatkan elemen dari array/koleksi
String s = list[3];
String s = list.get(3);
Tulis elemen ke dalam array
list[3] = s;
list.set(3, s);

"Jadi, mengapa ArrayList lebih baik? Sejauh yang saya tahu, kodenya sekarang lebih panjang."

"Pertama, ArrayList mendukung beberapa operasi tambahan yang harus dilakukan pemrogram sepanjang waktu. Array biasa tidak mendukung operasi ini. Misalnya, memasukkan atau menghapus elemen dari tengah array tanpa meninggalkan lubang. "

"Kedua, kemampuan untuk mengubah ukuran array. Ketika Anda perlu menambahkan satu elemen lagi tetapi array internal tidak memiliki slot kosong, inilah yang terjadi di dalam ArrayList :

a) Array lain dibuat yang 50% lebih besar dari array dalam saat ini, ditambah satu elemen.

b) Semua elemen dari array lama disalin ke array baru.

c) Array baru disimpan sebagai array dalam objek ArrayList. Array lama dinyatakan sampah (kami hanya berhenti menyimpan referensi untuk itu)."

Himpunan ArrayList
Tambahkan elemen di akhir array
Tindakan ini tidak didukung
list.add(s);
Tambahkan elemen di tengah array
Tindakan ini tidak didukung
list.add(15, s);
Tambahkan elemen di awal array
Tindakan ini tidak didukung
list.add(0, s);
Hapus elemen dari array
Kami dapat menghapus elemen dengan list[3] = null. Tapi ini akan meninggalkan 'lubang' di array.
list.remove(3);
2
Tugas
Java Syntax,  level 7pelajaran 5
Terkunci
Code entry
Sometimes you don't need to think, you just need to hammer it out! As paradoxical as it may seem, sometimes your fingers will "remember" better than your conscious mind. That's why while training at the secret CodeGym center you will sometimes encounter tasks that require you to enter code. By entering code, you get used to the syntax and earn a little dark matter. What's more, you combat laziness.

"Bagaimana kita bekerja dengan ArrayList ini?"

"Sebenarnya, seperti yang kita lakukan dengan larik biasa. Lihat. Mari kita bandingkan bekerja dengan ArrayList dengan bekerja dengan larik. Misalkan kita perlu 'membaca dalam 10 string dan menampilkannya di layar dalam urutan terbalik '."

"Lihat ini:

Dengan larik
public static void main(String[] args)
{
Reader r = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(r);

// Read strings from the keyboard
String[] list = new String[10];
for (int i = 0; i < list.length; i++)
{
  String s = reader.readLine();
  list[i] = s;
}

// Display the contents of the array
for (int i = 0; i < list.length; i++)
{
  int j = list.length - i - 1;
  System.out.println( list[j] );
}
}
Dengan ArrayList
public static void main(String[] args)
{
Reader r = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(r);

// Read strings from the keyboard
ArrayList&ltString> list = new ArrayList&ltString>();
for (int i = 0; i < 10; i++)
{
  String s = reader.readLine();
  list.add(s);
}

// Display the contents of the collection
for (int i = 0; i < list.size(); i++)
{
  int j = list.size() - i - 1;
  System.out.println( list.get(j) );
}
}

Saya telah menggunakan warna yang sama untuk menyorot tindakan serupa di setiap kolom."

"Di satu sisi, semuanya berbeda. Di sisi lain, tetap sama."

"Benar. Kecuali bahwa kita tidak menggunakan tanda kurung siku saat bekerja dengan ArrayList . Sebagai gantinya, kita menggunakan metode get , set dan add ."

"Ya, aku mengumpulkan sebanyak itu. Tetap saja, kelihatannya sangat mirip."