CodeGym/Java Blog/Acak/Java Ditetapkan sebagai Antarmuka
John Squirrels
Level 41
San Francisco

Java Ditetapkan sebagai Antarmuka

Dipublikasikan di grup Acak
anggota
Satu set hanyalah kumpulan objek unik. Unik berarti tidak ada dua objek yang memiliki nilai yang sama. Bergantung pada implementasi set, itu mungkin dipesan atau tidak. Set Java, sebagai Tipe Data Abstrak (ADT), memiliki beberapa operasi kunci (di mana T mewakili tipe data apa pun misalnya int, String, atau objek kelas apa pun): Java Ditetapkan sebagai Antarmuka - 1
  • boolean add(T item): mengembalikan nilai true jika item berhasil ditambahkan ke set, dan false jika item sudah ada di set.
  • boolean remove(T item): mengembalikan true jika item berhasil dihapus dari set dan false sebaliknya (jika item tidak ada di set).
  • boolean contains(T item): mengembalikan true jika item ada di set dan false sebaliknya.
  • boolean isEmpty(): mengembalikan true jika set kosong dan false sebaliknya.
Set di Java memiliki tanda tangan fungsi yang cukup jelas (sebagaimana mestinya). Jika Anda menambahkan dua item identik ke satu set, maka hanya item yang ditambahkan pertama yang akan ada di set. Semua upaya selanjutnya untuk menambahkan item yang sama akan diabaikan kecuali jika item tersebut dihapus terlebih dahulu. Salah satu operasi himpunan yang paling umum digunakan adalah memeriksa apakah suatu item berada dalam himpunan tertentu. Fungsi contains()memberikan runtime yang bagus untuk ini: kompleksitas waktu O(1) atau O(log n) bergantung pada apakah implementasi yang digunakan adalah a HashSetatau aTreeSet, masing-masing. Jadi untuk apa satu set digunakan? Nah, jika Anda perlu melacak banyak objek yang berbeda--seperti ID, nama, atau pengidentifikasi unik lainnya--dan sering memeriksa apakah ada item dalam koleksi semacam itu, maka satu set mungkin merupakan pilihan yang baik. Berikut adalah contoh kasus penggunaan himpunan: Bayangkan Anda memiliki daftar Studentobjek yang mewakili semua siswa di kelas tertentu. Masing-masing Studentmungkin memiliki nama unik (string) dan nilai (int) untuk kelas ini. Jika Anda sering ingin mereferensikan daftar semua siswa A (tingkat >=90), maka akan membosankan untuk mengulang daftar ini dan memeriksa nilai setiap siswa setiap saat. Sebagai gantinya, Anda mungkin menggunakan HashSetstring yang melacak semua siswa A di kelas, seperti:
  • Setiap kali nilai siswa diperbarui, Anda cukup memeriksa apakah nilai baru siswa tersebut lebih besar atau sama dengan 90 atau tidak.
    • Jika demikian, tambahkan mereka ke himpunan siswa A menggunakanadd()
      • Jika mereka sudah menjadi siswa A, maka operasi ini diabaikan begitu saja.
    • Jika tidak, maka keluarkan mereka dari himpunan siswa A yang menggunakanremove()
      • Jika mereka bukan siswa A pada saat ini, maka operasi ini diabaikan begitu saja.
Dengan sistem seperti itu, Anda akan selalu memiliki sekumpulan siswa 'A' yang up-to-date di kelas Anda. Jika Anda ingin memeriksa apakah Johnny Appleseed melakukannya dengan baik di kelas Anda, Anda dapat dengan mudah melakukannya dengan menghubungi contains(“Johnny Appleseed”)lokasi syuting. Tentu saja, ini hanyalah salah satu contoh kasus penggunaan untuk satu set, dan masalah khusus untuk melacak siswa A ini dapat diselesaikan dengan cara lain.

Implementasi: HashSet di Java dan Contoh Java TreeSet

Baik HashSetdi Jawa dan TreeSetdi Jawa datang dalam file java.utils package. Anda dapat mengimpornya 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
Perbedaan utama antara Java HashSetdan Java TreeSetadalah yang TreeSetdiurutkan, sedangkan yang HashSettidak. Inilah sebabnya mengapa TreeSetmemiliki kompleksitas waktu O(log n) untuk operasi kunci, sedangkan HashSetmemiliki kompleksitas waktu O(1) atau konstan; harus TreeSetmenjaga ketertiban setiap saat. Selain operasi kumpulan kunci yang disebutkan sebelumnya, the HashSetdan TreeSetdi Java memiliki beberapa fungsi bermanfaat lainnya:
  • void clear(): membersihkan set semua objek.
  • int size(): mengembalikan jumlah objek dalam set.
  • Object clone(): mengembalikan salinan set yang dangkal.
  • Iterator iterator(): mengembalikan iterator ke set, mulai dari objek pertama.
Anda dapat membayangkan menemukan kegunaan untuk fungsi-fungsi ini dalam contoh "daftar siswa A": Anda dapat menelepon size()jika Anda ingin melihat berapa banyak siswa 'A' yang Anda miliki, atau clear()jika Anda ingin menghapus daftar di akhir semester. Anda mungkin menggunakan clone()untuk membuat dan menyimpan klon dari daftar siswa A pada titik waktu tertentu, seperti selama laporan tengah semester (dengan cara ini klon tidak tetap up-to-date dengan yang asli).

Contoh Java HashSet

Berikut adalah contoh singkat dari 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"));


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

Contoh Java TreeSet

Kumpulan contoh Java dapat membantu Anda memahami teorinya. Berikut adalah contoh singkat a TreeSetof Strings yang 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());


    }
}
Keluaran: -------
[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 saja! Semoga ini membantu 😊
Komentar
  • Populer
  • Baru
  • Lama
Anda harus login untuk memberikan komentar
Halaman ini belum memiliki komentar