CodeGym /Blog Java /rawak /Koleksi di Jawa
John Squirrels
Tahap
San Francisco

Koleksi di Jawa

Diterbitkan dalam kumpulan

Apakah Koleksi di Jawa?

Koleksi dalam java diwakili sebagai bekas yang mengumpulkan semua elemen ke dalam satu unit. Contohnya , folder mel (kumpulan e-mel), direktori telefon (pemetaan nama kepada nombor telefon).

Apakah Rangka Kerja?

Rangka kerja ialah asas atau reka letak asas di mana anda mula bekerja dengan menggunakan kelas dan antara muka berbeza yang disediakan. Sebagai contoh , Laravel ialah salah satu rangka kerja PHP paling terkenal yang menyediakan rangka asas untuk aplikasi anda.

Apakah Rangka Kerja Koleksi dalam Java?

Semua objek dikumpulkan ke dalam satu objek bersama dengan seni bina yang mewakili dan menyediakan kaedah yang berbeza untuk memanipulasi koleksi. Jadi rangka kerja Collections dalam Java menyediakan struktur data berbeza yang telah dilaksanakan untuk menyimpan data dan kaedah, untuk memanipulasinya dengan ciri seperti menyusun, mencari, memadam dan memasukkan . Sebagai contoh , anda ingin melaksanakan sistem untuk beberapa syarikat rawak untuk meningkatkan perkhidmatan untuk pelanggan mereka, berdasarkan asas siapa cepat dia dapat. Ini juga dikenali sebagai pelaksanaan FIFO (first in first out). Sekarang kita perlu melaksanakan struktur data ini dan kemudian menggunakannya untuk mencapai matlamat kita. Rangka kerja Collections memberikan kami antara muka Baris Gilir yang kami hanya perlu mengimport dan bukannya melaksanakan, kemudian gunakannya dan kami selesai. Pelaksanaan : Anda boleh mengimport semua koleksi dengan menggunakan baris berikut:
import java.util.*;
Jika anda ingin mengimport koleksi tertentu kemudian gunakan nama pakej yang tepat, seperti:
import java.util.LinkedList;

Faedah Rangka Kerja Koleksi di Jawa

Ia mempunyai faedah berikut.
  1. Sudah Dilaksanakan (menjimatkan masa).
  2. Kecekapan Prestasi (kelajuan dan kualiti).
  3. Mengurangkan usaha untuk belajar dan menggunakan API baharu.

Apakah Hierarki Rangka Kerja Koleksi?

Sekarang mari kita lihat hierarki koleksi tetapi pertama sekali, kita perlu mengetahui komponen penting rangka kerja ini.
  1. Antara muka
  2. Kelas (pelaksanaan)
  3. Algoritma

Hierarki Rangka Kerja Koleksi

Koleksi dalam Java - 1Untuk pemahaman anda:
  1. Koleksi, Set, Baris Gilir dan Senarai semuanya adalah antara muka. Set, Baris Gilir dan Senarai dilanjutkan oleh antara muka Koleksi.
  2. PriorityQueue, HashSet, LinkedList dan Stack semuanya adalah kelas atau pelaksanaan antara muka ini.
  3. Ia tidak wajib bahawa kelas melaksanakan hanya satu antara muka. LinkedList juga melaksanakan antara muka Deque, sebagai contoh.

Jenis Koleksi

Rangka kerja koleksi Java mempunyai banyak jenis koleksi di dalamnya untuk mengurangkan usaha kami. Berikut adalah senarai beberapa koleksi:
  1. Kelas ArrayList
  2. Kelas LinkedList
  3. Antara Muka Senarai
  4. Tetapkan Antara Muka
  5. Antara Muka Baris
  6. Antara Muka Peta
  7. Kelas PriorityQueue
  8. Kelas HashMap
  9. Antara Muka Setanding
  10. Kelas LinkedHashMap
  11. Kelas TreeMap
  12. HashTable

Antara Muka Koleksi

Di sini kita akan membincangkan beberapa antara muka koleksi biasa dan kemudian beberapa kaedah yang dilaksanakan oleh kelas.

Antara Muka Koleksi

Ini adalah asas asas untuk rangka kerja Koleksi kerana ia menyediakan semua kaedah yang diperlukan untuk pelaksanaan. Peta adalah satu-satunya struktur data yang tidak melaksanakannya tetapi selebihnya semuanya melaksanakan kaedahnya. Antara muka ini mempunyai kaedah untuk mengetahui saiz koleksi, dan sama ada objek wujud dalam koleksi, menambah atau mengalih keluar objek daripada koleksi.

Antara Muka Boleh Diulang

Ia adalah antara muka akar untuk rangka kerja Koleksi kerana ia dilanjutkan oleh antara muka Koleksi yang dilaksanakan oleh semua kelas. Ia mengembalikan iterator untuk koleksi khusus untuk mengulanginya.

Antara Muka Baris

Baris gilir digunakan untuk memegang elemen tetapi ia tidak boleh diproses. Melaksanakan operasi pengumpulan asas, ia juga menyediakan kaedah sisipan dan pengekstrakan tambahan.

Tetapkan Antara Muka

Set digunakan untuk menyimpan elemen unik di dalamnya. Ia tidak pernah mengandungi unsur pendua dan memodelkan abstraksi set matematik untuk mewakili set seperti proses yang dijalankan pada mesin.

Antara Muka Senarai

Senarai ialah koleksi tertib kadangkala dipanggil jujukan yang boleh menyimpan elemen pendua di dalamnya. Ia memberikan kawalan kepada pengguna untuk mengemas kini atau mengalih keluar elemen tertentu, memasukkan elemen pada titik tertentu dengan menggunakan nilai indeks integernya. LinkedList dan ArrayList ialah kelas pelaksanaan antara muka Senarai.

Antara Muka Deque

Deque bermaksud baris gilir dua hujung yang bermaksud kita boleh melakukan operasi pada kedua-dua hujungnya. Kita boleh memasukkan dan mengeluarkan elemen dari kedua-dua hujungnya. Antara muka Deque memanjangkan antara muka baris gilir. ArrayDeque dan LinkedList kedua-duanya melaksanakan antara muka Deque. Ia menyediakan kaedah untuk memasukkan, memadam, dan memeriksa contoh dari kedua-dua hujung.

Antara Muka Peta

Antara muka peta juga merupakan sebahagian daripada rangka kerja Koleksi tetapi ia tidak memanjangkan antara muka Koleksi. Ia digunakan untuk menyimpan pasangan nilai kunci. Pelaksanaan utamanya ialah HashMap, TreeMap, dan LinkesHashMap yang serupa dalam aspek tertentu dengan HashSet, TreeSet dan LinkedHashSet. Ia sentiasa mengandungi kunci unik tetapi nilainya boleh diduplikasi. Ia berguna apabila anda perlu menambah, memadam atau mencari item berdasarkan kunci. Ia memberikan kita kaedah asas seperti meletakkan , dapatkan , keluarkan , saiz , kosong , dan sebagainya.

Kaedah Biasa Antara Muka ini

Sekarang kita akan melihat beberapa kaedah biasa yang disediakan untuk pelaksanaan kelas yang berbeza dalam rangka kerja ini kecuali antara muka Peta.
Kaedah Penerangan
tambah boolean awam(E e) Digunakan untuk memasukkan elemen ke dalam koleksi
buang boolean awam(elemen objek) Digunakan untuk mengalih keluar elemen daripada koleksi
saiz int awam () Mengembalikan bilangan elemen dalam koleksi
boolean awam mengandungi(elemen objek) Digunakan untuk mencari elemen
boolean awam isEmpty() Menyemak sama ada koleksi kosong
boolean awam sama (elemen objek) Menyemak kesaksamaan

Kelas Koleksi

Seperti yang kita tahu rangka kerja mempunyai antara muka yang berbeza yang dilaksanakan oleh banyak kelas di dalamnya. Sekarang mari kita lihat beberapa kelas yang biasa digunakan.

LinkedList

Ia ialah struktur data yang paling biasa digunakan yang melaksanakan senarai berganda untuk menyimpan elemen di dalamnya. Ia boleh menyimpan elemen pendua. Ia melaksanakan antara muka Dequeue yang dilanjutkan oleh antara muka Baris dan antara muka Senarai. Ia tidak disegerakkan. Sekarang mari kita lihat bagaimana untuk menyelesaikan masalah kita yang dibincangkan di atas (konsep FIFO) menggunakan LinkedList. Masalahnya ialah untuk melayani pelanggan dengan cara yang mereka sampai iaitu keluar dahulu .

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);
    }
}

Pengeluaran

Pelanggan dalam Baris Gilir:[John, Angelina, Brooke, Maxwell] Ketua baris gilir iaitu pelanggan pertama: John Element dialih keluar daripada baris gilir: John Poll(): Kembali Ketua baris gilir: Angelina Baris Terakhir:[Brooke, Maxwell]

ArrayList

Ia hanya melaksanakan antara muka Senarai. Ia mengekalkan susunan sisipan dan menggunakan tatasusunan dinamik untuk menyimpan elemen jenis data yang berbeza. Elemen boleh diduplikasi. Ia juga tidak disegerakkan dan boleh menyimpan nilai nol. Sekarang mari kita lihat kaedahnya yang berbeza... Ini berguna apabila kita tidak tahu berapa banyak rekod atau elemen yang perlu kita masukkan. Mari kita ambil contoh perpustakaan di mana kita tidak tahu berapa banyak buku yang perlu kita simpan. Jadi apabila kita mempunyai 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());
		}
	}
}

Pengeluaran

Absalom, Absalom! Masa untuk Membunuh Rumah Mirth Timur Eden

HashSet

Ia melaksanakan antara muka Set dan tidak pernah mengandungi nilai pendua. Ia melaksanakan jadual hash untuk menyimpan nilai. Ia juga membenarkan nilai nol. Ia tidak pernah mengekalkan tertib sisipan tetapi menyediakan prestasi masa yang tetap untuk menambah , mengalih keluar , saiz dan mengandungi kaedah. Ia adalah yang terbaik untuk operasi carian dan ia tidak disegerakkan.

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());
        }
    }
}

Pengeluaran

1 2 3 4 5
Seperti yang anda lihat ia tidak mengekalkan susunan sisipan.

ArrayDeque

Ia melaksanakan antara muka Deque supaya ia membenarkan operasi dari kedua-dua hujung. Ia tidak membenarkan nilai nol. Ia lebih pantas daripada Stack dan LinkedList apabila dilaksanakan sebagai Stack dan LinkedList. ArrayDeque tidak mempunyai sekatan saiz kerana ia membesar dan mengecut mengikut keperluan. Ia tidak disegerakkan, bermakna ia tidak selamat untuk benang. Untuk memastikan ia selamat benang, kita perlu melaksanakan beberapa logik luaran.

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);
       }
   }
}

Pengeluaran

Dua Satu Tiga

HashMap

Ia adalah pelaksanaan antara muka Peta yang disokong oleh jadual cincang. Ia menyimpan pasangan nilai kunci. Ia tidak membenarkan nilai nol. Ia tidak disegerakkan. Ia tidak pernah menjamin tertib sisipan. Ia menyediakan prestasi masa yang berterusan untuk kaedah seperti get , dan put . Prestasinya bergantung pada dua faktor — kapasiti awal dan faktor beban . Kapasiti ialah bilangan baldi dalam jadual cincang jadi kapasiti awal ialah bilangan baldi yang diperuntukkan pada masa penciptaan. Faktor beban ialah ukuran berapa banyak jadual cincang boleh diisi sebelum kapasitinya ditingkatkan. Kaedah rehash digunakan untuk meningkatkan kapasiti dan ia terutamanya menggandakan bilangan baldi.

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());
        }
    }
}

Pengeluaran

Nilai pada indeks 2 ialah: Peta lelaran China 1 England 2 USA 3 China

Algoritma

Rangka kerja Koleksi memberikan kami algoritma yang berbeza untuk operasi yang berbeza untuk digunakan pada koleksi. Di sini kita akan melihat operasi utama yang dilindungi oleh algoritma ini. Ia mengandungi algoritma yang berkaitan dengan:
  1. Menyusun
  2. Mencari
  3. Kocok
  4. Manipulasi Data Rutin
  5. Komposisi
  6. Mencari Nilai Ekstrem
Untuk pemahaman yang lebih baik kita akan membincangkan algoritma pengisihan.

Menyusun

Algoritma isihan menyusun semula senarai mengikut perhubungan susunan. Dua bentuk perhubungan disediakan.
  1. Susunan Semulajadi
  2. Susunan Perbandingan

Susunan Semulajadi

Dalam susunan semula jadi senarai disusun mengikut elemennya.

Susunan Perbandingan

Dalam bentuk pesanan ini parameter tambahan, yang merupakan pembanding, diluluskan bersama-sama dengan senarai. Algoritma isihan cantum yang sedikit dioptimumkan digunakan untuk mengisih yang pantas dan stabil kerana ia menjamin masa berjalan n log(n) dan ia tidak menyusun semula elemen yang sama. Kami akan menggunakan contoh yang sama dari ArrayList untuk menunjukkan pengisihan.

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());
        }
    }
}

Pengeluaran

Masa untuk Membunuh Absalom, Absalom! The House of Mirth East of Eden Selepas menyusun buku A Time to Kill Absalom, Absalom! Timur Eden Rumah Mirth

Kesimpulan

Kami berharap sekarang anda memahami apa itu rangka kerja koleksi java, apakah antara muka dan kelasnya dan cara melaksanakan kelasnya yang berbeza. Anda sentiasa boleh menggunakan rangka kerja ini untuk mengurangkan usaha anda dalam Java. Jangan ragu untuk berlatih dan kembali ke sini apabila anda memerlukan bantuan lanjut. Selamat belajar!
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION