"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 | |
|
|
Dapatkan jumlah elemen | |
|
|
Dapatkan elemen dari array/koleksi | |
|
|
Tulis elemen ke dalam array | |
|
|
"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 |
|
Tambahkan elemen di tengah array | |
Tindakan ini tidak didukung |
|
Tambahkan elemen di awal array | |
Tindakan ini tidak didukung |
|
Hapus elemen dari array | |
Kami dapat menghapus elemen dengan list[3] = null . Tapi ini akan meninggalkan 'lubang' di array. |
|
"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:
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] );
}
}
public static void main(String[] args)
{
Reader r = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(r);
// Read strings from the keyboard
ArrayList<String> list = new ArrayList<String>();
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."
GO TO FULL VERSION