1. ArrayListkelas
Hari ini kita akan meneroka ArrayListkelas. Ini adalah yang pertama daripada beberapa kelas yang dikenali sebagai koleksi . Di Java, koleksi adalah topik yang luas dan berguna sehinggakan keseluruhan pencarian CodeGym ditumpukan kepada mereka.
Untuk memahami sepenuhnya cara koleksi disusun dan semua nuansanya, anda perlu terlebih dahulu mempelajari OOP, antara muka, warisan, asas multithreading dan banyak lagi.
Jadi hari ini kita hanya akan berkenalan dengan jenis koleksi yang paling mudah. Tetapi pada tahap yang cukup mendalam supaya anda memahami cara menggunakannya dan cara ia berfungsi. Sekarang, temui ArrayListkoleksi itu .
Cerita belakang
Saya akan mulakan dengan sedikit latar belakang. Pengaturcara benar-benar tidak menyukai satu aspek tatasusunan: hakikat bahawa saiznya tidak boleh diubah. Bagaimana jika anda perlu menyimpan tiga lagi elemen dalam tatasusunan, tetapi terdapat hanya satu sel kosong?
Satu-satunya penyelesaian kepada had ruang tatasusunan adalah untuk mencipta tatasusunan yang sangat besar untuk menampung semua elemen yang anda mungkin perlu simpan. Tetapi ini biasanya membazirkan ingatan. Jika tatasusunan biasanya mengandungi dua atau tiga elemen tetapi terdapat kemungkinan kecil bahawa ia perlu menyimpan 100 daripadanya, maka adalah perlu untuk mencipta tatasusunan dengan kapasiti untuk menyimpan 100.
Jadi apa yang dibuat oleh pengaturcara? Mereka menulis ArrayListkelas, yang melakukan kerja yang sama seperti Arraykelas, tetapi boleh diubah saiz.
Kelas ArrayList
Nama kelas ArrayListterbentuk daripada dua perkataan: Array + List. Arrayialah tatasusunan dan Listmerupakan senarai.
Setiap ArrayListobjek mengandungi susunan elemen biasa. Apabila anda membaca elemen daripada ArrayList, objek mendapatkannya daripada tatasusunan dalamannya. Apabila anda menulis elemen, ia menulisnya ke tatasusunan dalaman.
Kelas ArrayList tidak mempunyai semua kelemahan yang ada pada tatasusunan. Ia tahu bagaimana untuk:
- Simpan elemen jenis tertentu
- Ubah saiz senarai secara dinamik
- Tambahkan elemen pada penghujung senarai
- Sisipkan elemen pada permulaan atau tengah senarai
- Alih keluar elemen dari mana-mana dalam senarai
Untuk butiran lanjut, lihat di bawah:
2. Mencipta ArrayListobjek
Untuk membuat ArrayListobjek, anda perlu menulis kod seperti ini:
ArrayList<TypeParameter> name = new ArrayList<TypeParameter>();
Di manakah ArrayListjenis/kelas koleksi, TypeParameterialah jenis elemen yang disimpan dalam ArrayListkoleksi, dan namemerupakan nama pembolehubah ArrayList<TypeParameter>.
Pembolehubah namemempunyai jenis generik. Ia terdiri daripada dua jenis: jenis koleksi ditunjukkan dahulu, dan kemudian kurungan sudut digunakan untuk menunjukkan jenis elemen yang disimpan dalam koleksi.
Contoh:
| Kod | Penerangan |
|---|---|
|
Senarai integer |
|
Senarai rentetan |
|
Senarai nombor nyata |
Tidak seperti tatasusunan, koleksi tidak boleh menyimpan jenis primitif, hanya jenis rujukan . Jadi jika anda memerlukan koleksi ints, gunakan Integerkelas pembalut sebagai gantinya.
3. Operasi denganArrayList
Pada mulanya, panjang senarai yang baru dibuat adalah sifar, kerana ia mengandungi 0 elemen. Jika anda menambah satu elemen pada senarai, panjangnya meningkat sebanyak 1. Jika anda mengalih keluar elemen yang ditambah, panjangnya berkurangan kembali kepada sifar.
Jadual berikut boleh mengajar anda lebih lanjut tentang kaedah kelas ArrayList:
| Kaedah | Penerangan |
|---|---|
|
Menambah elemen yang diluluskan pada senarai |
|
Menambah elemen ke lokasi tertentu dalam senarai. |
|
Mengembalikan elemen yang indeksnyaindex |
|
Berikan valuekepada elemen yang indeksnyaindex |
|
Mengalih keluar elemen yang indeksnya ialah index. Mengembalikan elemen yang dialih keluar. |
|
Mengalih keluar elemen yang anda hantar ke kaedah. Jika terdapat lebih daripada satu elemen sedemikian, yang pertama akan dialih keluar. |
|
Membersihkan senarai, iaitu mengalih keluar semua elemen daripada senarai. |
|
Menyemak sama ada senarai mengandungi value. |
|
Menyemak sama ada senarai itu kosong atau tidak. Dengan kata lain, sama ada panjang senarai adalah sifar. |
|
Mengembalikan saiz senarai, iaitu bilangan elemen dalam senarai. |
|
Mengembalikan tatasusunan yang mengandungi unsur-unsur senarai. Anda perlu menghantar tatasusunan kepada kaedah. |
Kaedah ini membolehkan anda melakukan hampir apa sahaja yang anda mahukan dengan senarai: menukar elemen, menambah elemen dan mengalih keluar elemen. Anda boleh mengosongkan senarai dengan satu arahan, atau malah menukar senarai kepada tatasusunan.
4. Perbandingan ArrayListdanArray
Saya tidak fikir kita boleh mengelak daripada membandingkan ArrayListdan array.
Terdapat hanya 4 tindakan yang boleh anda lakukan dengan tatasusunan:
- Buat tatasusunan
- Dapatkan elemen mengikut indeks
- Tetapkan elemen mengikut indeks
- Dapatkan panjang tatasusunan
Berikut ialah operasi ini kerana ia digunakan pada tatasusunan dan ArrayList:
| Susunan | ArrayList |
|---|---|
|
|
|
|
|
|
|
|
Mari kita bandingkan cara sesuatu ArrayListberfungsi berbanding cara tatasusunan berfungsi. Sebagai contoh, mari kita laksanakan tugas ini: "baca 10 rentetan dari papan kekunci dan paparkannya pada skrin dalam susunan terbalik"
| Menggunakan Array | Menggunakan ArrayList |
|---|---|
|
|
Analoginya jelas. Segala-galanya entah bagaimana lebih pendek dan lebih jelas untuk tatasusunan. Tetapi ArrayListtidak sukar juga: untuk mendapatkan elemen, kami menggunakan get()kaedah; untuk menukar elemen, set()kaedah; untuk mendapatkan panjang senarai, size()kaedah.
Jadi mengapa pengaturcara menggunakan ArrayListkelas?
Intinya, sudah tentu, adalah semua kaedah lain yang tidak ada pada tatasusunan biasa:
- Tambahkan elemen pada senarai
- Tambahkan elemen pada bahagian tengah senarai
- Cari elemen dalam senarai
- Mengalih keluar elemen daripada senarai
GO TO FULL VERSION