CodeGym /Java Blog /Acak /Koleksi di Jawa
John Squirrels
Level 41
San Francisco

Koleksi di Jawa

Dipublikasikan di grup Acak

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.
  1. Sudah Diimplementasikan (menghemat waktu).
  2. Efisiensi Kinerja (kecepatan dan kualitas).
  3. 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.
  1. Antarmuka
  2. Kelas (implementasi)
  3. Algoritma

Hirarki Kerangka Pengumpulan

Koleksi di Jawa - 1Untuk pemahaman Anda:
  1. Koleksi, Set, Antrean, dan Daftar semuanya adalah antarmuka. Set, Antrian dan Daftar diperluas oleh antarmuka Koleksi.
  2. PriorityQueue, HashSet, LinkedList, dan Stack semuanya adalah kelas atau implementasi antarmuka ini.
  3. 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:
  1. Kelas Daftar Array
  2. Kelas Daftar Tertaut
  3. Antarmuka Daftar
  4. Atur Antarmuka
  5. Antarmuka Antrian
  6. Antarmuka Peta
  7. Kelas Antrian Prioritas
  8. Kelas HashMap
  9. Antarmuka yang Sebanding
  10. Kelas LinkedHashMap
  11. Kelas Peta Pohon
  12. 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:
  1. Penyortiran
  2. Mencari
  3. Mengacak
  4. Manipulasi Data Rutin
  5. Komposisi
  6. Menemukan Nilai-Nilai Ekstrim
Untuk pemahaman yang lebih baik kita akan membahas algoritma pengurutan.

Penyortiran

Algoritme pengurutan menyusun ulang daftar berdasarkan hubungan pengurutan. Dua bentuk hubungan disediakan.
  1. Pemesanan Alami
  2. 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

Kesimpulan

Kami berharap sekarang Anda memahami apa itu kerangka koleksi java, apa saja antarmuka dan kelasnya, serta bagaimana mengimplementasikan kelas-kelasnya yang berbeda. Anda selalu dapat menggunakan kerangka kerja ini untuk mengurangi upaya Anda di Java. Jangan ragu untuk berlatih dan kembali ke sini kapan pun Anda membutuhkan bantuan lebih lanjut. Selamat belajar!
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION