Antarmuka Koleksi: Koleksi adalah antarmuka koleksi paling dasar, mendeklarasikan metode umum yang cocok untuk koleksi Java (termasuk hanya set dan daftar). Atur dan daftarkan keduanya mewarisi koneksi dan peta
Metode antarmuka pengumpulan:
boolean add (objek o): tambahkan referensi ke objek ke koleksi
void clear (): hapus semua objek dalam koleksi, yaitu, tidak lagi memegang referensi ke objek ini
boolean isempty (): menentukan apakah set itu kosong
Boolean Berisi (Objek O): Menentukan apakah referensi ke objek tertentu diadakan di koleksi
Iterar iterator (): Mengembalikan objek iterator yang dapat digunakan untuk mengulangi elemen dalam koleksi
Boolean Hapus (Objek O): Menghapus referensi ke objek dari koleksi
int size (): Mengembalikan jumlah elemen dalam koleksi
Objek [] toarray (): Mengembalikan array yang berisi semua elemen dalam koleksi
Tentang: Metode Iterator () dan ToArray () digunakan untuk semua elemen koleksi. Yang pertama mengembalikan objek iterator, dan yang terakhir mengembalikan array yang berisi semua elemen dalam koleksi.
Antarmuka Iterator menyatakan metode berikut:
HasNext (): Menentukan apakah elemen dalam koleksi telah dilalui. Jika tidak, kembalikan true
next (): kembalikan elemen berikutnya
lepas (): Hapus elemen sebelumnya yang dikembalikan dengan metode berikutnya () dari koleksi.
Set (Set): Set adalah jenis koleksi paling sederhana. Objek dalam koleksi tidak diurutkan dengan cara tertentu, dan tidak ada objek duplikat. Antarmuka yang ditetapkan terutama mengimplementasikan dua kelas implementasi:
Hashset: Kelas hashset menggunakan algoritma hash untuk mengakses objek dalam koleksi, dan kecepatan akses relatif cepat.
Treeeset: Kelas TreeSet mengimplementasikan antarmuka sortedset, yang dapat mengurutkan objek dalam koleksi.
Penggunaan Set: Ia menyimpan referensi ke objek, tidak ada objek duplikat
Set set = new hashset (); string s1 = string baru ("hello"); string s2 = s1; string s3 = string baru ("dunia"); set.add (s1); set.add (s2); set.add (s3); System.out.println (set.size ()); // Jumlah objek dalam koleksi cetak adalah 2.
Bagaimana metode set () set menentukan apakah objek telah disimpan dalam koleksi?
boolean isexists = false; iterator iterator = set.iterator (); while (it.hasnext ()) {string oldstr = it.next (); if (newstr.equals (oldstr)) {isExists = true;}}Daftar: Karakteristik daftar adalah bahwa elemen -elemennya disimpan dengan cara linier, dan objek duplikat dapat disimpan dalam koleksi.
Kelas implementasi utama antarmuka daftar meliputi:
ArrayList (): menyatakan bahwa panjangnya dapat diubah menjadi array. Elemen dapat diakses secara acak, dan kecepatan memasukkan dan menghapus elemen ke dalam arraylist () lambat.
LinkedList (): Menggunakan struktur data daftar tertaut dalam implementasi. Penyisipan dan penghapusan cepat, akses lambat.
Untuk akses acak daftar, itu hanya untuk mengambil elemen secara acak yang terletak di lokasi tertentu. Metode daftar GET (indeks int) dimasukkan kembali ke objek dalam koleksi pada posisi indeks yang ditentukan oleh indeks parameter, dan subskrip dimulai dari "0". Dua cara paling dasar untuk mengambil semua objek dalam koleksi:
1: untuk metode loop dan get ():
untuk (int i = 0; i <list.size (); i ++) {System.out.println (list.get (i));}2: Gunakan iterator:
Iterator it = list.iterator (); while (it.hashNext) {System.out.println (it.next);}
Peta: Peta adalah kumpulan objek kunci peta dan objek nilai. Setiap elemennya berisi sepasang objek utama dan objek nilai.
Ketika peta tidak diwarisi dari antarmuka koleksi, setiap kali objek utama diberikan, objek nilai yang sesuai akan dikembalikan.
Metode Umum untuk Peta:
1 Tambahkan dan hapus operasi:
Object Put (Kunci Objek, Nilai Objek): Tambahkan elemen ke koleksi
Objek Hapus (tombol objek): Menghapus elemen yang terkait dengan kunci
membatalkan putall (peta t): menambahkan semua elemen dari gambar tertentu ke gambar
void clear (): Hapus semua peta dari gambar
2 Operasi Kueri:
Objek Dapatkan (Kunci Objek): Dapatkan nilai yang terkait dengan kunci kata kunci. Objek -objek utama dalam koleksi peta tidak diperbolehkan diulangi, yaitu, hasil dari dua objek utama yang dibandingkan dengan metode Equals () adalah salah. Namun, setiap tombol apa pun dapat dipetakan secara eksklusif ke objek nilai yang sama.
Koneksi: Kelas Utilitas Koleksi. Koneksi menyediakan metode statis praktis untuk koleksi java
Meringkaskan:
Penggunaan dasar koleksi Java telah diringkas. Di atas adalah koleksi Java yang paling umum digunakan. Untuk detailnya, silakan merujuk ke dokumen bantuan JDK. Haha, ada lebih banyak aplikasi peta, dan inilah ini. Koneksi menyediakan banyak metode praktis untuk daftar /peta, yang sangat berguna untuk pengembangan harian.
Boolean berisiKey (kunci objek): Menentukan apakah ada kunci kata kunci dalam gambar
Boolean berisi nilai (nilai objek): Menentukan apakah ada nilai dalam gambar
int size (): Mengembalikan jumlah peta pada gambar saat ini
boolean isempty (): menentukan apakah ada pemetaan pada gambar
Daftar menyimpan objek dalam urutan di mana objek masuk, tanpa mengurutkan atau mengedit operasi. Set menerima hanya sekali untuk setiap objek dan menggunakan metode penyortiran internal sendiri (biasanya, Anda hanya peduli apakah suatu elemen milik set, bukan pesanannya - jika tidak, Anda harus menggunakan daftar).
Peta juga menyimpan salinan setiap elemen, tetapi ini didasarkan pada "kunci" dan peta juga memiliki penyortiran bawaan, sehingga tidak peduli dengan urutan di mana elemen ditambahkan. Jika pesanan di mana elemen ditambahkan penting bagi Anda, Anda harus menggunakan LinkedHashset atau LinkedHashMap.
Metode Fungsi Daftar:
Sebenarnya ada dua jenis: satu adalah Daftar Array Dasar, yang memiliki keuntungan akses acak ke elemen, dan yang lainnya adalah LinkedList yang lebih kuat, yang tidak dirancang untuk akses acak cepat, tetapi memiliki serangkaian metode yang lebih umum.
Daftar: Pesanan adalah fitur terpenting dari Daftar: Memastikan bahwa urutan elemen spesifik dipertahankan. Daftar Menambahkan banyak metode ke koleksi, memungkinkan penyisipan dan penghapusan elemen ke tengah daftar (ini hanya disarankan untuk LinkedList.) Daftar dapat menghasilkan daftar, yang dapat menggunakannya untuk melintasi daftar dari dua arah, atau menyisipkan dan menghapus elemen dari tengah daftar.
ArrayList: Daftar yang diimplementasikan oleh Array. Mengizinkan akses acak cepat ke elemen, tetapi memasukkan dan menghapus elemen ke tengah daftar lambat. ListIterator hanya boleh digunakan untuk beralih melalui daftar array dari belakang ke depan, daripada memasukkan dan menghapus elemen. Karena itu jauh lebih mahal daripada LinkedList.
LinkedList: Akses berurutan dioptimalkan, dan overhead memasukkan dan menghapus ke tengah daftar tidak terlalu tinggi. Akses acak relatif lambat. (Gunakan ArrayList sebagai gantinya.) Juga memiliki metode berikut: addFirst (), addLast (), getFirst (), getLast (), lepasFirst () dan removelast (). Metode -metode ini (tidak didefinisikan dalam antarmuka atau kelas dasar apa pun) membuat penggunaan LinkedList sebagai tumpukan, antrian, dan antrian dua arah.
Metode Fungsi Set:
Set memiliki antarmuka yang persis sama dengan koleksi, sehingga tidak ada fungsi tambahan, tidak seperti dua daftar berbeda di depan. Faktanya, Set adalah koleksi, tetapi perilakunya berbeda. (Ini adalah aplikasi khas warisan dan pemikiran polimorfik: melakukan perilaku yang berbeda.) Set tidak menyimpan elemen duplikat (seperti cara menilai elemennya sama, lebih bertanggung jawab)
Set: Setiap elemen yang disimpan dalam set harus unik karena set tidak menyimpan elemen duplikat. Elemen yang ditambahkan ke set harus menentukan metode Equals () untuk memastikan keunikan objek. Set memiliki antarmuka yang persis sama dengan koleksi. Antarmuka yang ditetapkan tidak menjamin urutan elemen pemeliharaan.
Hashset: Set dirancang untuk pencarian cepat. Objek yang disimpan dalam hashset harus mendefinisikan hashcode ().
Treeeset: Setel dalam urutan penyimpanan, lapisan yang mendasarinya adalah struktur pohon. Gunakan untuk mengekstrak urutan yang dipesan dari SET.
LinkedHashset: Memiliki kecepatan kueri hashset, dan secara internal menggunakan daftar tertaut untuk mempertahankan urutan elemen (pesanan penyisipan). Jadi ketika Anda menggunakan Iterator untuk melintasi set, hasilnya akan ditampilkan dalam urutan di mana elemen dimasukkan.
Metode fungsi peta:
Metode put (kunci objek, nilai objek) menambahkan "nilai" (menginginkan sesuatu) dan "kunci" yang terkait dengan "nilai" (menggunakannya untuk menemukan). Metode mendapatkan (tombol objek) mengembalikan "nilai" yang terkait dengan "kunci" yang diberikan. Anda dapat menggunakan containskey () dan containsValue () untuk menguji apakah "kunci" atau "nilai" termasuk dalam peta.
Perpustakaan kelas Java standar berisi beberapa peta yang berbeda: HashMap, TreeMap, LinkedHashMap, WeakHashMap, IdentityHashMap. Mereka semua memiliki peta antarmuka dasar yang sama, tetapi perilaku, efisiensi, strategi penyortiran, menghemat siklus hidup objek, dan menentukan setara dengan "kunci".
Efisiensi eksekusi adalah masalah besar dengan peta. Jika Anda melihat apa yang akan dilakukan (), Anda akan mengerti mengapa mencari "kunci" di ArrayList cukup lambat. Dan di sinilah hashmap mempercepat. HashMap menggunakan nilai khusus yang disebut kode hash untuk menggantikan pencarian lambat untuk kunci.
"Memiliki kode" adalah "relatif unik" untuk mewakili nilai int objek, dan dihasilkan dengan mengonversi informasi tertentu dari objek. Semua objek Java dapat menghasilkan kode hash karena hashCode () adalah metode yang didefinisikan dalam objek kelas dasar.
HashMap menggunakan hashcode () dari objek untuk kueri cepat. Metode ini dapat secara signifikan meningkatkan kinerja.
Peta: Mempertahankan korelasi "pasangan nilai kunci" sehingga Anda dapat menemukan "nilai" melalui "kunci"
HashMap: Peta didasarkan pada implementasi tabel hash. Overhead dari memasukkan dan meminta "pasangan nilai kunci" diperbaiki. Kapasitas kapasitas dan faktor beban beban dapat diatur melalui konstruktor untuk menyesuaikan kinerja wadah.
LinkedHashMap: Mirip dengan HashMap, tetapi ketika berulang di atasnya, urutan di mana "pasangan nilai kunci" adalah urutan penyisipannya, atau urutan yang paling baru digunakan (LRU). Hanya sedikit lebih lambat dari hashmap. Lebih cepat dikirim ketika diakses secara iteratif karena menggunakan daftar tertaut untuk mempertahankan pesanan internal.
TreeMap: Implementasi berdasarkan struktur data pohon merah dan hitam. Ketika Anda melihat "kunci" atau "pasangan nilai kunci", mereka diurutkan (urutan ditentukan oleh perbandingan atau pembanding). TreeMap ditandai oleh fakta bahwa hasil yang Anda dapatkan diurutkan. TreeMap adalah satu -satunya peta dengan metode submap (), yang dapat mengembalikan subtree.
WeakHashMap: Peta kunci lemah, objek yang digunakan dalam peta juga diizinkan untuk dirilis: Ini dirancang untuk menyelesaikan masalah khusus. Jika tidak ada referensi di luar peta menunjuk ke "kunci", "kunci" ini dapat didaur ulang oleh pengumpul sampah.
IdentifikasihashMap: gunakan == bukannya sama () untuk membandingkan "kunci". Dirancang khusus untuk menyelesaikan masalah khusus.