Apa yang Diatur di Jawa
Mari kita ingat secara singkat bahwa antarmuka Set mendefinisikan satu set (set). Itu memperluas Koleksi dan mendefinisikan perilaku koleksi yang tidak mengizinkan elemen duplikat. Dengan demikian, metode add() mengembalikan false jika upaya dilakukan untuk menambahkan elemen duplikat ke set. Antarmuka tidak mendefinisikan metode tambahannya sendiri. Antarmuka Set menangani keunikan objek yang disimpan, keunikan ditentukan oleh penerapan metode equals() . Oleh karena itu, jika objek dari kelas yang dibuat akan ditambahkan ke Set , sebaiknya ganti metode equals() .kelas LinkedHashSet
Sebelum berbicara tentang kelas LinkedHashSet , kita perlu menyebutkan kerabat dekatnya, kelas HashSet . HashSet mengimplementasikan antarmuka Set . Itu membuat koleksi yang menyimpan elemen dalam tabel hash. Elemen tabel hash disimpan sebagai pasangan kunci-nilai. Kunci menentukan sel (atau segmen) untuk menyimpan nilai. Isi kunci digunakan untuk menentukan nilai unik yang disebut kode hash. Kita dapat menganggap kode hash sebagai pengidentifikasi objek, meskipun tidak harus unik. Kode hash ini juga berfungsi sebagai indeks tempat penyimpanan data yang terkait dengan kunci. Kelas LinkedHashSet Java memperluas HashSet tanpa menambahkan metode baru apa pun .LinkedHashSet memungkinkan Anda dengan cepat memeriksa keberadaan entri, seperti halnya HashSet , tetapi berisi daftar yang dipesan di dalamnya. Ini berarti menyimpan urutan penyisipan elemen. Dengan kata lain, LinkedHashSet memelihara daftar tertaut dari elemen set sesuai urutan penyisipannya. Ini memungkinkan iterasi penyisipan yang dipesan ke dalam satu set. Tapi ini menyebabkan kelas LinkedHashSet melakukan operasi lebih lama dari kelas HashSet .Fitur Penting dari LinkedHashSet
-
Kami dapat menyimpan elemen unik hanya di LinkedHashSet
-
LinketHashSet memungkinkan kita mengekstrak elemen dalam urutan yang sama dengan yang kita sisipkan
-
LinkedHashSet Tidak Disinkronkan
-
LinkedHashSet memungkinkan menyimpan elemen null
-
LinkedHashSet menggunakan teknik hashing untuk menyimpan elemen pada indeks tertentu berdasarkan kode hash
Metode LinkedHashSet
Selain metode yang diwarisi dari kelas induknya, HashSet mendefinisikan metode berikut:-
boolean add(Object o) menambahkan elemen yang ditentukan ke set ini jika belum ada.
-
void clear() menghapus semua elemen dari set ini.
-
Object clone() mengembalikan salinan dangkal dari instance LinkedHashSet ini : elemennya sendiri tidak dikloning.
-
boolean berisi(Objek o) mengembalikan true jika set ini berisi elemen yang ditentukan.
-
boolean isEmpty() mengembalikan nilai true jika set ini tidak mengandung elemen.
-
Iterator iterator() mengembalikan iterator pada elemen set ini.
-
boolean remove(Object o) menghapus elemen yang ditentukan dari set ini, jika ada.
-
int size() mengembalikan jumlah elemen dalam set ini (jumlah elemennya).
import java.util.LinkedHashSet;
import java.util.Set;
public class LinkedHashSetEx1 {
public static void main(String[] args) {
//LinkedHashSet() Init
Set<String> set = new LinkedHashSet<>();
//adding elements to LinkedHashSet
set.add("Re"); //first added element
set.add("Do");
set.add("Fa");
set.add("Sol");
set.add("La");
set.add("Ti");
set.add("Mi");//last added element
System.out.println(set);
}
}
Outputnya adalah:

Contoh 2. Menambahkan duplikat ke LinkedHashSet
Mari masukkan elemen LinkedHashSet 7 kita dengan nama partitur musik lagi dan taruh satu elemen baru yang sama dengan salah satu elemen yang ditempatkan sebelumnya.import java.util.LinkedHashSet;
import java.util.Set;
public class LinkedHashSetEx2 {
public static void main(String[] args) {
Set<String> set = new LinkedHashSet<>();
set.add("Re");
set.add("Do");
set.add("Fa");
set.add("Sol");
set.add("La");
set.add("Ti");
set.add("Mi");
set.add("Sol");
System.out.println(set);
}
}
Keluaran programnya ada di sini:
Contoh 3. Menghapus elemen dari LinkedHashSet
import java.util.LinkedHashSet;
import java.util.Set;
public class LinkedHashSet3 {
public static void main(String[] args) {
Set<String> set = new LinkedHashSet<>();
set.add("Re");
set.add("Do");
set.add("Fa");
set.add("Sol");
set.add("La");
set.add("Ti");
set.add("Mi");
System.out.println(set);
set.remove("Fa");// removing an element from our set
set.remove("Score");//trying to remove element that isn't in set
System.out.println(set.remove("Score"));
System.out.println("Print our set without elements removed: ");
System.out.println(set);
set.clear();
System.out.println("Print out our set after clear command: ");
System.out.println(set);
}
}
Keluaran programnya ada di sini:
LinkedHashSet vs HashSet
Kedua kelas ini adalah kerabat dekat. Namun di dalam HashSet menggunakan HashMap untuk menyimpan objek sementara LinkedHashSet menggunakan LinkedHashMap . Jika Anda tidak perlu mempertahankan urutan penyisipan tetapi perlu menyimpan objek unik, lebih tepat menggunakan HashSet . Jika Anda perlu mempertahankan urutan penyisipan elemen maka LinkedHashSet adalah pilihan Anda. Kinerja LinkedHashSet sedikit lebih lambat daripada HashSet karena LinkedHashSet menggunakan LinkedList internal untuk mempertahankan urutan penyisipan elemen. Mari kita punya contoh:import java.util.*;
public class LinkedHashSetExample1 {
public static void main(String[] args) {
// while regular hash set orders its elements according to its hashcode stamps
Set<Integer> regularHashSet = new HashSet<>();
regularHashSet.add(7);
regularHashSet.add(3);
regularHashSet.add(5);
regularHashSet.add(65536);
regularHashSet.add(9);
// few duplicates
regularHashSet.add(5);
regularHashSet.add(7);
// next will print:
// > regularHashSet = [65536, 3, 5, 7, 9]
System.out.println("regularHashSet = " + regularHashSet);
// linked hash set keeps order of adding unchanged
Set<Integer> linkedHashSet = new LinkedHashSet<>();
linkedHashSet.add(7);
linkedHashSet.add(3);
linkedHashSet.add(5);
linkedHashSet.add(65536);
linkedHashSet.add(9);
// few duplicates
linkedHashSet.add(5);
linkedHashSet.add(7);
// next will print:
// > linkedHashSet = [7, 3, 5, 65536, 9]
System.out.println("linkedHashSet = " + linkedHashSet);
}
}
Output dari program ini adalah:
Menggunakan Java LinkedHashSet di aplikasi dunia nyata
Karena LinkedHashSet memungkinkan Anda memeriksa keberadaan entri dan juga menyimpan pesanan dengan cepat, koleksi ini tampaknya cukup nyaman untuk menghilangkan duplikat dari daftar. Atau, misalnya, memecahkan masalah seperti barang yang terakhir terlihat di tas saya. Atau, ingat game seperti itu, Pokemon Go? LinkedHashSet dapat menyimpan daftar Pokémon yang Anda temui dan urutan kemunculannya di jalur Anda. Dalam hal ini, Pokémon yang "berulang" tidak akan ditambahkan lagi ke dalam daftar. Atau, misalnya, daftar bos berdasarkan level yang pernah Anda temui di game apa pun dengan level. Atau sejarah penemuan benda kosmik. LinkedHashSetmemungkinkan Anda untuk dengan cepat memeriksa apakah badan ruang sudah ada dalam daftar atau tidak, dan jika tidak ada, tambahkan ke daftar. Mari kita ambil contoh menghilangkan duplikat.import java.util.*;
class LinkedHashSetExample2 {
public static void main(String[] args) {
List<String> listWithDuplicates = List.of("some","elements","with", "few", "duplicates", "were", "here", "duplicates", "duplicates");
Set<String> linkedHashSet = new LinkedHashSet<>(listWithDuplicates);
List<String> listWithoutDuplicates = new ArrayList<>(linkedHashSet);
// next will print:
// > listWithDuplicates = [some, elements, with, few, duplicates, here, duplicates, duplicates]
System.out.println("listWithDuplicates = " + listWithDuplicates);
// next will print:
// > listWithoutDuplicates = [some, elements, with, few, duplicates, here]
System.out.println("listWithoutDuplicates = " + listWithoutDuplicates);
// -------------------------------------------------------------------------
// while using regular Hash Set will generally produces some unexpected order
Set<String> regularHashSet = new HashSet<>(listWithDuplicates);
// next will print:
// > linkedHashSet = [some, elements, with, few, duplicates, were, here]
System.out.println("linkedHashSet = " + linkedHashSet);
// next will print:
// > regularHashSet = [here, some, with, duplicates, were, elements, few]
System.out.println("regularHashSet = " + regularHashSet);
}
}
Keluaran programnya ada di sini:
GO TO FULL VERSION