Apa itu Koleksi di Jawa?
Koleksi di java direpresentasikan sebagai wadah yang mengelompokkan semua elemen menjadi satu kesatuan. Misalnya , folder surat (grup email), direktori telepon (pemetaan nama ke nomor telepon).Apa itu Kerangka?
Kerangka kerja adalah landasan atau tata letak dasar tempat Anda mulai bekerja dengan menggunakan berbagai kelas dan antarmuka yang disediakan. Misalnya , Laravel adalah salah satu kerangka PHP paling terkenal yang menyediakan kerangka dasar untuk aplikasi Anda.Apa Kerangka Koleksi di Java?
Semua objek dikelompokkan menjadi satu objek bersama dengan arsitektur yang mewakili dan menyediakan metode berbeda untuk memanipulasi koleksi. Jadi kerangka Koleksi di Java menyediakan struktur data berbeda yang sudah diterapkan untuk menyimpan data dan metode, untuk memanipulasinya dengan fitur seperti pengurutan, pencarian, penghapusan, dan penyisipan . Misalnya , Anda ingin menerapkan sistem pada beberapa perusahaan secara acak untuk meningkatkan layanan bagi pelanggannya, berdasarkan prinsip siapa cepat dia dapat. Hal ini dikenal juga dengan penerapan FIFO (first in first out). Sekarang kita perlu mengimplementasikan struktur data ini dan kemudian menggunakannya untuk mencapai tujuan kita. Kerangka Koleksi memberi kita antarmuka Antrean yang hanya perlu kita impor, bukan implementasi, lalu gunakan, dan selesai. Implementasi : Anda dapat mengimpor semua koleksi dengan menggunakan baris berikut:import java.util.*;
Jika Anda ingin mengimpor koleksi tertentu maka gunakan nama paket yang tepat, seperti:
import java.util.LinkedList;
Manfaat Kerangka Koleksi di Java
Ini memiliki manfaat sebagai berikut.- Sudah Diimplementasikan (menghemat waktu).
- Efisiensi Kinerja (kecepatan dan kualitas).
- Mengurangi upaya untuk mempelajari dan menggunakan API baru.
Apa Hierarki Kerangka Pengumpulan?
Sekarang mari kita lihat hierarki koleksi tetapi pertama-tama, kita perlu mengetahui komponen penting dari kerangka kerja ini.- Antarmuka
- Kelas (implementasi)
- Algoritma
Hirarki Kerangka Pengumpulan
Untuk pemahaman Anda:- Koleksi, Set, Antrean, dan Daftar semuanya adalah antarmuka. Set, Antrian dan Daftar diperluas oleh antarmuka Koleksi.
- PriorityQueue, HashSet, LinkedList, dan Stack semuanya adalah kelas atau implementasi antarmuka ini.
- Sebuah kelas tidak wajib mengimplementasikan hanya satu antarmuka saja. LinkedList juga mengimplementasikan antarmuka Deque, misalnya.
Jenis Koleksi
Kerangka koleksi Java memiliki banyak jenis koleksi di dalamnya untuk mengurangi upaya kita. Berikut ini daftar beberapa koleksinya:- Kelas Daftar Array
- Kelas Daftar Tertaut
- Antarmuka Daftar
- Atur Antarmuka
- Antarmuka Antrian
- Antarmuka Peta
- Kelas Antrian Prioritas
- Kelas HashMap
- Antarmuka yang Sebanding
- Kelas LinkedHashMap
- Kelas Peta Pohon
- Tabel Hash
Antarmuka Koleksi
Di sini kita akan membahas beberapa antarmuka koleksi umum dan kemudian beberapa metode yang diterapkan oleh kelas.Antarmuka Koleksi
Ini adalah landasan dasar kerangka Koleksi karena menyediakan semua metode yang diperlukan untuk implementasi. Peta adalah satu-satunya struktur data yang tidak mengimplementasikannya tetapi sisanya mengimplementasikan metodenya. Antarmuka ini memiliki metode untuk mengetahui ukuran koleksi, dan apakah suatu objek ada dalam koleksi, menambah atau menghapus objek dari koleksi.Antarmuka yang Dapat Diubah
Ini adalah antarmuka root untuk kerangka Koleksi karena diperluas oleh antarmuka Koleksi yang diimplementasikan oleh semua kelas. Ini mengembalikan iterator untuk koleksi tertentu untuk mengulanginya.Antarmuka Antrian
Antrian digunakan untuk menampung elemen tetapi tidak dapat diproses. Menerapkan operasi pengumpulan dasar, ini juga menyediakan metode penyisipan dan ekstraksi tambahan.Atur Antarmuka
Set digunakan untuk menampung elemen unik di dalamnya. Itu tidak pernah berisi elemen duplikat dan memodelkan abstraksi himpunan matematika untuk mewakili himpunan seperti proses yang berjalan pada mesin.Antarmuka Daftar
Daftar adalah kumpulan terurut yang terkadang disebut urutan yang dapat menampung elemen duplikat di dalamnya. Ini memberikan kontrol kepada pengguna untuk memperbarui atau menghapus elemen tertentu, memasukkan elemen pada titik tertentu dengan menggunakan nilai indeks integernya. LinkedList dan ArrayList adalah kelas implementasi antarmuka Daftar.Antarmuka Deque
Deque adalah singkatan dari antrian berujung ganda yang berarti kita dapat melakukan operasi pada kedua ujungnya. Kita dapat menyisipkan dan menghapus elemen dari kedua ujungnya. Antarmuka Deque memperluas antarmuka antrian. ArrayDeque dan LinkedList keduanya mengimplementasikan antarmuka Deque. Ini menyediakan metode untuk menyisipkan, menghapus, dan memeriksa instance dari kedua ujungnya.Antarmuka Peta
Antarmuka peta juga merupakan bagian dari kerangka Koleksi tetapi tidak memperluas antarmuka Koleksi. Ini digunakan untuk menyimpan pasangan nilai kunci. Implementasi utamanya adalah HashMap, TreeMap, dan LinkesHashMap yang dalam aspek tertentu serupa dengan HashSet, TreeSet, dan LinkedHashSet. Itu selalu berisi kunci unik tetapi nilainya dapat diduplikasi. Ini berguna ketika Anda perlu menambah, menghapus, atau mencari item berdasarkan kunci. Ini memberi kita metode dasar seperti put , get , delete , size , blank , dan sebagainya.Metode Umum Antarmuka ini
Sekarang kita akan melihat beberapa metode umum yang disediakan untuk implementasi kelas yang berbeda dalam kerangka ini kecuali antarmuka Peta.Metode | Keterangan |
---|---|
penambahan boolean publik(E e) | Digunakan untuk memasukkan elemen ke dalam koleksi |
penghapusan boolean publik (Elemen objek) | Digunakan untuk menghapus elemen dari koleksi |
ukuran int publik() | Mengembalikan jumlah elemen dalam koleksi |
boolean publik berisi (Elemen objek) | Digunakan untuk mencari suatu elemen |
boolean publik isEmpty() | Memeriksa apakah koleksinya kosong |
boolean publik sama dengan (Elemen objek) | Memeriksa kesetaraan |
Kelas Koleksi
Seperti yang kita ketahui framework memiliki antarmuka berbeda yang diimplementasikan oleh banyak kelas di dalamnya. Sekarang mari kita lihat beberapa kelas yang umum digunakan.Daftar Tertaut
Ini adalah struktur data yang paling umum digunakan yang mengimplementasikan daftar tertaut ganda untuk menyimpan elemen di dalamnya. Itu dapat menyimpan elemen duplikat. Ini mengimplementasikan antarmuka Dequeue yang diperluas oleh antarmuka Antrian dan antarmuka Daftar. Itu tidak disinkronkan. Sekarang mari kita lihat bagaimana menyelesaikan masalah kita yang dibahas di atas (konsep FIFO) menggunakan LinkedList. Masalahnya adalah melayani pelanggan dengan cara mereka datang, yaitu first in first out .Contoh
import java.util.*;
public class LinkedListExample {
public static void main(String[] args) {
Queue<String> customerQueue = new LinkedList<String>();
//Adding customers to the Queue as they arrived
customerQueue.add("John");
customerQueue.add("Angelina");
customerQueue.add("Brooke");
customerQueue.add("Maxwell");
System.out.println("Customers in Queue:"+customerQueue);
//element() => returns head of the queue
//we will see our first customer and serve him
System.out.println("Head of the queue i.e first customer: "+customerQueue.element());
//remove () method =>removes first element(customer) from the queue i.e the customer is served so remove him to see next
System.out.println("Element removed from the queue: "+customerQueue.remove());
//poll () => removes and returns the head
System.out.println("Poll():Returned Head of the queue: "+customerQueue.poll());
//print the remaining customers in the Queue
System.out.println("Final Queue:"+customerQueue);
}
}
Keluaran
Pelanggan dalam Antrean:[John, Angelina, Brooke, Maxwell] Kepala antrian yaitu pelanggan pertama: John Element dihapus dari antrian: John Poll():Kembali Kepala antrian: Angelina Antrian Akhir:[Brooke, Maxwell]
Daftar Array
Itu hanya mengimplementasikan antarmuka Daftar. Ia mempertahankan urutan penyisipan dan menggunakan array dinamis untuk menyimpan elemen dari tipe data yang berbeda. Elemen dapat diduplikasi. Itu juga tidak disinkronkan dan dapat menyimpan nilai nol. Sekarang mari kita lihat metode yang berbeda... Ini berguna ketika kita tidak mengetahui berapa banyak record atau elemen yang perlu kita masukkan. Mari kita ambil contoh sebuah perpustakaan dimana kita tidak tahu berapa banyak buku yang harus kita simpan. Jadi setiap kali kita memiliki buku, kita perlu memasukkannya ke dalam ArrayList.Contoh
public class ArrayListExample {
public static void main(String args[]) {
// Creating the ArrayList
ArrayList<String> books = new ArrayList<String>();
// Adding a book to the list
books.add("Absalom, Absalom!");
// Adding a book in array list
books.add("A Time to Kill");
// Adding a book to the list
books.add("The House of Mirth");
// Adding a book to the list
books.add("East of Eden");
// Traversing the list through Iterator
Iterator<String> itr = books.iterator();
while (itr.hasNext()) {
System.out.println(itr.next());
}
}
}
Keluaran
Absalom, Absalom! Saatnya Membunuh Rumah Keajaiban di Timur Eden
Set Hash
Ini mengimplementasikan antarmuka Set dan tidak pernah berisi nilai duplikat. Ini mengimplementasikan tabel hash untuk menyimpan nilai. Ini juga mengizinkan nilai nol. Itu tidak pernah mempertahankan urutan penyisipan tetapi memberikan kinerja waktu yang konstan untuk metode tambah , hapus , ukuran , dan isi . Yang terbaik untuk operasi pencarian dan tidak disinkronkan.Contoh
import java.util.*;
class HashSetExample{
public static void main(String args[]){
//creating HashSet and adding elements to it
HashSet<Integer> hashSet=new HashSet();
hashSet.add(1);
hashSet.add(5);
hashSet.add(4);
hashSet.add(3);
hashSet.add(2);
//getting an iterator for the collection
Iterator<Integer> i=hashSet.iterator();
//iterating over the value
while(i.hasNext()) {
System.out.println(i.next());
}
}
}
Keluaran
1 2 3 4 5
Seperti yang Anda lihat, itu tidak mempertahankan urutan penyisipan.
ArrayDeque
Ini mengimplementasikan antarmuka Deque sehingga memungkinkan operasi dari kedua ujungnya. Itu tidak mengizinkan nilai nol. Ini lebih cepat daripada Stack dan LinkedList ketika diimplementasikan sebagai Stack dan LinkedList. ArrayDeque tidak memiliki batasan ukuran seiring pertumbuhan dan penyusutannya sesuai kebutuhan. Itu tidak disinkronkan, artinya tidak aman untuk thread. Untuk menjaganya tetap aman, kita harus menerapkan beberapa logika eksternal.Contoh
import java.util.*;
public class ArrayDequeExample {
public static void main(String[] args) {
//creating Deque and adding elements
Deque<String> deque = new ArrayDeque<String>();
//adding an element
deque.add("One");
//adding an element at the start
deque.addFirst("Two");
//adding an element at the end
deque.addLast("Three");
//traversing elements of the collection
for (String str : deque) {
System.out.println(str);
}
}
}
Keluaran
Dua Satu Tiga
Peta Hash
Ini adalah implementasi antarmuka Peta yang didukung oleh tabel hash. Ini menyimpan pasangan nilai kunci. Itu tidak mengizinkan nilai nol. Itu tidak disinkronkan. Itu tidak pernah menjamin penyisipan pesanan. Ini memberikan kinerja waktu yang konstan untuk metode seperti get , dan put . Kinerjanya bergantung pada dua faktor — kapasitas awal dan faktor beban . Kapasitas adalah jumlah keranjang dalam tabel hash sehingga kapasitas awal adalah jumlah keranjang yang dialokasikan pada saat pembuatan. Faktor beban adalah ukuran seberapa banyak tabel hash dapat diisi sebelum kapasitasnya ditingkatkan. Metode pengulangan digunakan untuk meningkatkan kapasitas dan pada dasarnya menggandakan jumlah ember.Contoh
import java.util.*;
public class HashMapExample{
public static void main(String args[]){
//creating a HashMap
HashMap<Integer,String> map=new HashMap<Integer,String>();
//putting elements into the map
map.put(1,"England");
map.put(2,"USA");
map.put(3,"China");
//get element at index 2
System.out.println("Value at index 2 is: "+map.get(2));
System.out.println("iterating map");
//iterating the map
for(Map.Entry m : map.entrySet()){
System.out.println(m.getKey()+" "+m.getValue());
}
}
}
Keluaran
Nilai pada indeks 2 adalah: Tiongkok mengulangi peta 1 Inggris 2 AS 3 Tiongkok
Algoritma
Kerangka Koleksi memberi kita algoritme berbeda untuk operasi berbeda untuk diterapkan pada koleksi. Di sini kita akan melihat operasi besar mana yang dicakup oleh algoritma ini. Ini berisi algoritma yang terkait dengan:- Penyortiran
- Mencari
- Mengacak
- Manipulasi Data Rutin
- Komposisi
- Menemukan Nilai-Nilai Ekstrim
Penyortiran
Algoritme pengurutan menyusun ulang daftar berdasarkan hubungan pengurutan. Dua bentuk hubungan disediakan.- Pemesanan Alami
- Pemesanan Perbandingan
Pemesanan Alami
Dalam pengurutan alami, sebuah daftar diurutkan berdasarkan elemen-elemennya.Pemesanan Perbandingan
Dalam bentuk pengurutan ini, parameter tambahan, yaitu pembanding, diteruskan bersama dengan daftar. Algoritme pengurutan gabungan yang sedikit dioptimalkan digunakan untuk pengurutan yang cepat dan stabil karena menjamin waktu berjalan n log(n) dan tidak menyusun ulang elemen yang sama. Kami akan menggunakan contoh yang sama dari ArrayList untuk mendemonstrasikan pengurutan.Contoh
import java.util.*;
public class SortingExample{
public static void main(String args[]){
//Creating arraylist
ArrayList<String> books=new ArrayList<String>();
//Adding a book to the arraylist
books.add("A Time to Kill");
//Adding a book to the arraylist
books.add("Absalom, Absalom!");
//Adding a book to the arraylist
books.add("The House of Mirth");
//Adding a book to the arraylist
books.add("East of Eden");
//Traversing list through Iterator before sorting
Iterator itrBeforeSort=books.iterator();
while(itrBeforeSort.hasNext()){
System.out.println(itrBeforeSort.next());
}
//sorting the books
Collections.sort(books);
System.out.println("After sorting the books");
//Traversing list through Iterator after sorting
Iterator itr=books.iterator();
while(itr.hasNext()){
System.out.println(itr.next());
}
}
}
Keluaran
Saatnya Membunuh Absalom, Absalom! Rumah Keajaiban Timur Eden Setelah menyortir buku Saatnya Membunuh Absalom, Absalom! Timur Eden Rumah Keajaiban
GO TO FULL VERSION