CodeGym/Blog Java/rawak/Set Java sebagai Antara Muka
John Squirrels
Tahap
San Francisco

Set Java sebagai Antara Muka

Diterbitkan dalam kumpulan
Satu set hanyalah koleksi objek unik. Unik bermakna tiada dua objek boleh mempunyai nilai yang sama. Bergantung pada pelaksanaan set, ia mungkin dipesan atau tidak. Set Java, sebagai Jenis Data Abstrak (ADT), mempunyai beberapa operasi utama (di mana T mewakili mana-mana jenis data contohnya int, String atau sebarang objek kelas): Set Java sebagai Antara Muka - 1
  • boolean add(T item): mengembalikan benar jika item berjaya ditambahkan pada set, dan palsu jika item itu sudah ada dalam set.
  • boolean remove(T item): mengembalikan benar jika item berjaya dikeluarkan daripada set dan palsu sebaliknya (jika item itu tiada dalam set).
  • boolean contains(T item): mengembalikan benar jika item berada dalam set dan palsu sebaliknya.
  • boolean isEmpty(): mengembalikan benar jika set kosong dan palsu sebaliknya.
Set dalam Java mempunyai tandatangan fungsi yang cukup jelas (seperti yang sepatutnya). Jika anda menambah dua item yang sama pada set, maka hanya item pertama yang ditambahkan akan berada dalam set. Semua percubaan berikutnya untuk menambah item yang sama akan diabaikan melainkan item itu dialih keluar terlebih dahulu. Salah satu operasi set yang paling biasa digunakan ialah menyemak sama ada item berada dalam set tertentu. Fungsi ini contains()memberikan masa jalan yang hebat untuk ini: O(1) atau O(log n) kerumitan masa bergantung pada jika pelaksanaan yang digunakan ialah a HashSetatau aTreeSet, masing-masing. Jadi untuk apa satu set boleh digunakan? Nah, jika anda perlu menjejaki banyak objek yang berbeza--seperti ID, nama atau pengecam unik lain--dan kerap menyemak sama ada item wujud dalam koleksi sedemikian, maka satu set berkemungkinan merupakan pilihan yang baik. Berikut ialah contoh kes penggunaan set: Bayangkan anda mempunyai senarai Studentobjek yang mewakili semua pelajar dalam kelas tertentu. Setiap satu Studentmungkin mempunyai nama unik (rentetan) dan gred (int) untuk kelas ini. Jika anda ingin merujuk senarai semua pelajar A (gred >=90) dengan kerap, maka adalah membosankan untuk mengulang senarai ini dan menyemak gred setiap pelajar setiap kali. Sebaliknya, anda mungkin menggunakan HashSetrentetan yang menjejaki semua pelajar A dalam kelas, seperti:
  • Setiap kali gred pelajar dikemas kini, anda hanya boleh menyemak sama ada gred baharu Pelajar lebih besar daripada atau sama dengan 90 atau tidak.
    • Jika ya, tambahkannya pada set A pelajar menggunakanadd()
      • Jika mereka sudah menjadi pelajar A, maka operasi ini diabaikan begitu sahaja.
    • Jika tidak, keluarkannya daripada set A pelajar menggunakanremove()
      • Jika mereka bukan pelajar A pada ketika ini, maka operasi ini diabaikan begitu sahaja.
Dengan sistem sedemikian, anda akan sentiasa mempunyai set terkini semua pelajar 'A' dalam kelas anda. Jika anda ingin menyemak sama ada Johnny Appleseed berjaya dalam kelas anda, anda boleh melakukannya dengan mudah dengan menghubungi contains(“Johnny Appleseed”)set. Sudah tentu, ini hanyalah satu contoh kes penggunaan untuk set, dan masalah khusus untuk menjejaki pelajar A ini boleh diselesaikan dengan cara lain.

Pelaksanaan: HashSet dalam Java dan Contoh Java TreeSet

Kedua-dua HashSetdi Jawa dan TreeSetdi Jawa datang dalam java.utils package. Anda boleh mengimportnya seperti itu:
// imports everything from Java's util package, including HashSet and TreeSet
import java.util.*;
atau
import java.util.HashSet; // imports only the Java HashSet
import java.util.TreeSet; // imports only the Java TreeSet
Perbezaan utama antara Java HashSetdan Java TreeSetialah yang TreeSetdiisih, sedangkan yang HashSettidak. Inilah sebabnya mengapa TreeSetmempunyai kerumitan masa O(log n) untuk operasi utama, manakala HashSetmempunyai kerumitan masa O(1) atau malar; mesti TreeSetmenjaga ketenteraman sepanjang masa. Sebagai tambahan kepada operasi set utama yang dinyatakan sebelum ini, kedua-dua HashSetdan TreeSetdalam Java mempunyai beberapa fungsi lain yang berguna:
  • void clear(): mengosongkan set semua objek.
  • int size(): mengembalikan bilangan objek dalam set.
  • Object clone(): mengembalikan salinan cetek set.
  • Iterator iterator(): mengembalikan iterator ke set, bermula pada objek pertama.
Anda boleh bayangkan mencari kegunaan untuk fungsi ini dalam contoh "senarai pelajar A": anda boleh menghubungi size()jika anda ingin melihat bilangan pelajar 'A' yang anda ada, atau clear()jika anda ingin mengosongkan senarai pada akhir semester. Anda mungkin menggunakan clone()untuk membuat dan menyimpan klon senarai pelajar A pada masa tertentu, seperti semasa laporan pertengahan penggal (dengan cara ini klon tidak kekal terkini bersama dengan yang asal).

Contoh Java HashSet

Berikut ialah contoh ringkas a HashSets Stringyang digunakan di Jawa:
import java.util.HashSet;
class HashSetDemo {
    public static void main(String[] args)
    {
	  // create a HashSet of Strings
        HashSet<String> hs = new HashSet<String>();

        // Add elements using the add() method
        hs.add("Collin");
	  hs.add("Bob");
 	  hs.add("Abigail");

        // Duplicates will ignored; this statement is useless
        hs.add("Collin");


        System.out.println(hs);
	  System.out.println("Bob is in the set (T/F): " + hs.contains("Bob"));
  System.out.println("Max is in the set (T/F): " + hs.contains("Max"));


    }
}
Pengeluaran: --------
[Collin, Bob, Abigail]
Bob is in the set (T/F): true
Max is in the set (T/F): false

Contoh Java TreeSet

Contoh set Java boleh membantu anda memahami teori tersebut. Berikut ialah contoh ringkas a TreeSets Stringyang digunakan di Jawa:
import java.util.TreeSet;
class TreeSetDemo {
    public static void main(String[] args)
    {
	  // create a TreeSet of Strings
        TreeSet<String> ts = new TreeSet<String>();

        // Add elements using the add() method.
        ts.add("Collin");
	  ts.add("Bob");
 	  ts.add("Abigail");

        // Duplicates will ignored; this statement is useless
        ts.add("Collin");

        // printing the set prints the names in alphabetical order!
        System.out.println(ts);

	  System.out.println("Bob is in the set (T/F): " + ts.contains("Bob"));
  System.out.println("Max is in the set (T/F): " + ts.contains("Max"));
  System.out.println("Size of the set: " + ts.size());
 	  ts.clear();
	  System.out.println("Size of the set after clear(): " + ts.size());


    }
}
Pengeluaran: -------
[Abigail, Bob, Collin]
Bob is in the set (T/F): true
Max is in the set (T/F): false
Size of the set: 3
Size of the set after clear(): 0
Itu sahaja! Semoga ini membantu 😊
Komen
  • Popular
  • Baru
  • Tua
Anda mesti log masuk untuk meninggalkan ulasan
Halaman ini tidak mempunyai sebarang ulasan lagi