Perkenalan

Hampir setiap program perlu menyimpan beberapa kumpulan data. Itu bisa berupa string dan angka, objek, dan sebagainya. Array adalah solusi penyimpanan yang luar biasa. Tetapi array memiliki batasan tertentu. Misalnya, ukurannya tetap, elemen tidak dapat dihapus, dan Anda tidak dapat memasukkan elemen di tengah. Koleksi dibuat untuk mengatasi hal ini dan keterbatasan lainnya. Semua jenis koleksi (dan jumlahnya banyak, seperti yang akan kita lihat nanti di pelajaran ini) memiliki kemampuan untuk mengubah ukurannya sendiri secara dinamis. Beberapa jenis koleksi dapat menyimpan elemen yang dipesan dan secara otomatis menyusun elemen baru saat ditambahkan.

Dalam pelajaran ini, kita akan mengenal hierarki kelas dari koleksi dasar di Java Collections Framework . Ada juga berbagai pustaka alternatif yang memperluas kemampuan Kerangka Koleksi Java standar . Yang paling populer adalah Guava (Perpustakaan Koleksi Google).

*Tidak semua antarmuka dan kelas ditampilkan dalam diagram. Beberapa dihilangkan agar lebih mudah dipahami.

Antarmuka dasar

Diagram menunjukkan bahwa ada dua antarmuka dasar yang diimplementasikan untuk membentuk kelas dan antarmuka lainnya.

Mari kita lihat antarmuka ini:

  1. Koleksi — Koleksi biasa yang berisi sekumpulan elemen (objek). Koleksi ini memiliki metode dasar untuk bekerja dengan elemen: masukkan ( add , addAll ), hapus ( remove , removeAll , clear ), cari ( contains , containsAll ), periksa apakah koleksi kosong ( isEmpty ) dan dapatkan ukuran ( size ).

  2. Peta — Kumpulan yang disusun sebagai pasangan kunci-nilai. Selain itu, setiap kunci dalam Peta adalah unik: tidak ada dua kunci yang memiliki nilai yang sama. Koleksi ini terkadang disebut kamus . Peta adalah antarmuka terpisah. Itu tidak mengimplementasikan antarmuka Collection , tetapi merupakan bagian dari Java Collections Framework .

Metode yang berguna untuk bekerja dengan elemen dalam Peta :

  • masukkan ( masukkan , masukkanSemua )

  • dapatkan ( dapatkan , keySet , nilai , entrySet )

  • hapus ( hapus , hapus )

  • cari ( berisiKey , berisiValue )

  • periksa apakah koleksinya kosong ( isEmpty )

  • dapatkan ukuran ( ukuran )

Sekarang mari kita bicara lebih banyak tentang masing-masing.

Antarmuka koleksi

Antarmuka Koleksi memperluas antarmuka Iterable , yang memiliki metode tunggal: iterator() . Bagi kami, ini berarti koleksi apa pun yang mewarisi Iterable akan dapat mengembalikan iterator.

Iterator adalah objek khusus yang dapat Anda gunakan untuk mengakses elemen koleksi apa pun, terlepas dari implementasi spesifiknya.

Gambar tersebut menunjukkan bahwa 3 antarmuka mewarisi antarmuka Collection : List , Queue dan Set . Sekarang kita akan melihat masing-masing secara singkat.

Daftar adalah koleksi terurut yang memungkinkan nilai duplikat. Fitur khusus dari Daftar adalah elemennya diberi nomor dan dapat diakses dengan nomor (indeks).

Antrean menyimpan elemen sesuai urutan penambahannya ke antrean .

Tidak seperti daftar, Set mewakili koleksi tidak terurut yang tidak mengizinkan elemen berulang. Antarmuka Set sesuai dengan konsep himpunan matematika .

Implementasi antarmuka Peta

Kita dapat melihat bahwa antarmuka Peta mewakili pemetaan antara kunci dan nilai unik.


interface Map<K, V>

di mana K adalah jenis kunci dan V adalah jenis nilai yang disimpan.

Dengan menggunakan kunci, kita dapat mengekstrak data dari Map . Untuk menambahkan elemen ke Map , kita harus menentukan kunci dan nilai.

Mari kita lihat beberapa implementasi Map :

  1. HashMap adalah implementasi Peta yang didasarkan pada tabel hash. Itu dapat menyimpan kunci dan nilai dari jenis apa pun, termasuk null . Urutan elemen tidak dijamin.

  2. LinkedHashMap adalah struktur data yang menyimpan data sebagai daftar elemen yang ditautkan. Elemen muncul dalam daftar sesuai urutan penambahannya.

  3. TreeMap mengimplementasikan antarmuka SortedMap (melalui antarmuka NavigableMap ). Elemen dalam struktur ini disimpan dalam urutan terurut (ketika elemen baru ditambahkan, koleksi akan diurutkan secara otomatis). TreeMap sangat bagus untuk menyimpan sejumlah besar data yang diurutkan dengan pengambilan cepat.

Koleksi usang:

Java memiliki koleksi usang dari versi sebelumnya (untuk menjaga kompatibilitas ke belakang). Koleksi lama ini tidak boleh digunakan dalam kode baru:

  • Pencacahan — analog dengan antarmuka Iterator ;

  • Vektor — daftar elemen yang terurut dan analog dengan kelas ArrayList ;

  • Tumpukan — implementasi struktur data tumpukan, yang menyimpan dan memanipulasi elemen seperti cara Anda berinteraksi dengan tumpukan buku. Ada metode untuk menambahkan elemen ke tumpukan ( push ) dan melepasnya ( pop );

  • Kamus — analog dengan antarmuka Peta , tetapi merupakan kelas abstrak;

  • Hashtable — analog dengan HashMap .

Anda dapat membaca lebih lanjut tentang Kerangka Koleksi di artikel ini .