pengenalan

Hampir setiap program perlu menyimpan beberapa set data. Ia mungkin rentetan dan nombor, objek, dan sebagainya. Tatasusunan ialah penyelesaian storan yang hebat. Tetapi tatasusunan mempunyai batasan tertentu. Sebagai contoh, saiznya ditetapkan, elemen tidak boleh dialih keluar dan anda tidak boleh memasukkan elemen di tengah. Koleksi telah dibuat untuk mengatasi batasan ini dan lain-lain. Semua jenis koleksi (dan terdapat banyak daripadanya, seperti yang akan kita lihat kemudian dalam pelajaran ini) mempunyai keupayaan untuk mengubah saiznya secara dinamik. Sesetengah jenis koleksi boleh menyimpan elemen tersusun dan menyusun elemen baharu secara automatik semasa ia ditambahkan.

Dalam pelajaran ini, kita akan berkenalan dengan hierarki kelas koleksi asas dalam Rangka Kerja Koleksi Java . Terdapat juga pelbagai perpustakaan alternatif yang memanjangkan keupayaan Rangka Kerja Koleksi Java standard . Yang paling popular ialah Jambu Batu (Pustaka Koleksi Google).

*Bukan semua antara muka dan kelas diwakili dalam rajah. Ada yang ditinggalkan untuk memudahkan pemahaman.

Antara muka asas

Rajah menunjukkan bahawa terdapat dua antara muka asas yang dilaksanakan untuk membentuk seluruh kelas dan antara muka.

Mari kita lihat antara muka ini:

  1. Koleksi — Koleksi biasa yang mengandungi satu set elemen (objek). Koleksi ini mempunyai kaedah asas untuk bekerja dengan elemen: masukkan ( tambah , tambahSemua ), keluarkan ( keluarkan , keluarkanSemua , kosongkan ), cari ( mengandungi , mengandungiSemua ), semak sama ada koleksi kosong ( isEmpty ) dan dapatkan saiz ( saiz ).

  2. Peta — Koleksi berstruktur sebagai pasangan nilai kunci. Selain itu, setiap kunci dalam Peta adalah unik: tiada dua kunci mempunyai nilai yang sama. Koleksi ini kadangkala dipanggil kamus . Peta ialah antara muka yang berasingan. Ia tidak melaksanakan antara muka Koleksi , tetapi merupakan sebahagian daripada Rangka Kerja Koleksi Java .

Kaedah berguna untuk bekerja dengan elemen dalam Peta :

  • masukkan ( put , putAll )

  • dapatkan ( dapatkan , keySet , nilai , entrySet )

  • keluarkan ( buang , kosongkan )

  • carian ( containsKey , containsValue )

  • semak sama ada koleksi kosong ( isEmpty )

  • dapatkan saiz ( saiz )

Sekarang mari kita bercakap lebih lanjut tentang setiap daripada mereka.

Antara muka koleksi

Antara muka Koleksi memanjangkan antara muka Iterable , yang mempunyai satu kaedah: iterator() . Bagi kami, ini bermakna mana-mana koleksi yang mewarisi Iterable akan dapat mengembalikan iterator.

Iterator ialah objek khas yang boleh anda gunakan untuk mengakses elemen mana-mana koleksi, tanpa mengira pelaksanaan khususnya .

Rajah menunjukkan bahawa 3 antara muka mewarisi antara muka Koleksi : List , Queue dan Set . Sekarang kita akan melihat setiap daripada mereka secara ringkas.

Senarai ialah koleksi tersusun yang membenarkan nilai pendua. Ciri tertentu Senarai ialah elemennya bernombor dan boleh diakses dengan nombor (indeks).

Baris Gilir menyimpan elemen mengikut susunan ia ditambahkan pada baris gilir.

Tidak seperti senarai, Set mewakili koleksi tidak tertib yang tidak membenarkan elemen berulang. Antara muka Set sepadan dengan konsep set matematik .

Pelaksanaan antara muka Peta

Kita dapat melihat bahawa antara muka Peta mewakili pemetaan antara kunci unik dan nilai.


interface Map<K, V>

di mana K ialah jenis kekunci dan V ialah jenis nilai yang disimpan.

Menggunakan kunci, kami boleh mengekstrak data daripada Peta . Untuk menambah elemen pada Map , kita mesti menentukan kunci dan nilai.

Mari lihat beberapa pelaksanaan Map :

  1. HashMap ialah pelaksanaan Map yang berdasarkan jadual hash. Ia boleh menyimpan kunci dan nilai apa-apa jenis, termasuk null . Susunan elemen tidak dijamin.

  2. LinkedHashMap ialah struktur data yang menyimpan data sebagai senarai unsur terpaut. Elemen-elemen muncul dalam senarai mengikut susunan ia ditambahkan.

  3. TreeMap melaksanakan antara muka SortedMap (melalui antara muka NavigableMap ). Unsur-unsur dalam struktur ini disimpan dalam susunan tersusun (apabila elemen baharu ditambah, koleksi diisih secara automatik). TreeMap sangat bagus untuk menyimpan sejumlah besar data yang diisih dengan perolehan pantas.

Koleksi lapuk:

Java mempunyai koleksi usang daripada versi sebelumnya (untuk mengekalkan keserasian ke belakang). Koleksi lama ini tidak boleh digunakan dalam kod baharu:

  • Penghitungan — sama dengan antara muka Iterator ;

  • Vektor — senarai unsur tersusun dan serupa dengan kelas ArrayList ;

  • Tindanan — pelaksanaan struktur data tindanan, yang menyimpan dan memanipulasi elemen seperti cara anda akan berinteraksi dengan timbunan buku. Terdapat kaedah untuk menambah elemen pada timbunan ( tolak ) dan menanggalkannya ( pop );

  • Kamus — serupa dengan antara muka Peta , tetapi ia adalah kelas abstrak;

  • Hashtable — serupa dengan HashMap .

Anda boleh membaca lebih lanjut tentang Rangka Kerja Koleksi dalam artikel ini .