KodeGym/Blog Jawa/Acak/LinkedHashSet ing Jawa
John Squirrels
tingkat
San Francisco

LinkedHashSet ing Jawa

Diterbitake ing grup
Ngomong babagan kelas LinkedHashSet ing Jawa, kita kudu nyebutake yen nindakake antarmuka Set . LinkedHashSet nggawe koleksi sing nyimpen unsur ing tabel hash nanging njaga urutan sisipan unsur ora kaya mitra HashSet .

Apa Setel ing Jawa

Ayo kita kelingan sedhela sing antarmuka Set nemtokake pesawat (set). Iku ngluwihi Koleksi lan nemtokake prilaku koleksi sing ora ngidini unsur duplikat. Mangkono, cara nambah () ngasilake palsu yen nyoba kanggo nambah unsur duplikat kanggo pesawat. Antarmuka ora nemtokake cara tambahan dhewe. Antarmuka Set njupuk care saka uniqueness saka obyek disimpen, uniqueness ditemtokake dening implementasine saka padha () cara. Mulane, yen obyek saka kelas digawe bakal ditambahake menyang Set , iku seng di pengeni kanggo override witjaksono () cara.

Kelas LinkedHashSet

Sadurunge ngomong babagan kelas LinkedHashSet , kita kudu nyebutake relatif cedhak, kelas HashSet . HashSet ngleksanakake antarmuka Set . Iki nggawe koleksi sing nyimpen unsur ing tabel hash. Unsur saka tabel hash disimpen minangka pasangan kunci-nilai. Tombol kasebut nemtokake sel (utawa segmen) kanggo nyimpen nilai kasebut. Isi kunci digunakake kanggo nemtokake nilai unik sing diarani kode hash. Kita bisa mikir kode hash minangka pengenal obyek, sanajan ora kudu unik. Kode hash iki uga dadi indeks kanggo nyimpen data sing ana gandhengane karo kunci kasebut. Kelas LinkedHashSet Java ngluwihi HashSet tanpa nambahake metode anyar.LinkedHashSet ngidini sampeyan mriksa kanthi cepet ana entri, kaya HashSet , nanging ngemot dhaptar dhawuh ing njero. Iki tegese nyimpen urutan selipan saka unsur. Ing tembung liyane, LinkedHashSet njaga dhaptar sing disambung saka unsur set ing urutan sing dilebokake. Iki ngidini pengulangan dhawuh selipan menyang set. Nanging iki nyebabake kelas LinkedHashSet nindakake operasi luwih suwe tinimbang kelas HashSet .

Fitur Penting LinkedHashSet

  • Kita bisa nyimpen unsur unik mung ing LinkedHashSet

  • LinketHashSet ayo ngekstrak unsur kanthi urutan sing padha karo sing kita lebokake

  • LinkedHashSet Ora Disinkronake

  • LinkedHashSet ngidini nyimpen unsur null

  • LinkedHashSet nggunakake teknik hashing kanggo nyimpen unsur ing indeks tartamtu adhedhasar kode hash

Metode LinkedHashSet

Saliyane metode sing diwarisake saka kelas induk, HashSet nemtokake cara ing ngisor iki:
  • Tambah boolean (Obyek o) nambah unsur sing ditemtokake menyang set iki yen durung ana.

  • void clear () mbusak kabeh unsur saka pesawat iki.

  • Klone obyek () ngasilake salinan cethek saka conto LinkedHashSet iki : unsur kasebut ora dikloning.

  • boolean ngemot (Obyek o) ngasilake bener yen set iki ngemot unsur sing ditemtokake.

  • boolean isEmpty () ngasilake bener yen set iki ora ana unsur.

  • Iterator iterator () ngasilake iterator liwat unsur pesawat iki.

  • boolean mbusak (Obyek o) mbusak unsur kasebut saka pesawat iki, yen ana.

  • int size () ngasilake jumlah unsur ing pesawat iki (jumlah unsur).

Conto LinkedHashSet GampangIng conto ing ngisor iki, kita nuduhake initialization obyek LinkedHashSet lan nggunakake metode add () kanggo ngisi set kasebut.
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);
       }
   }
Output yaiku:
[Re, Do, Fa, Sol, La, Ti, Mi]
Kaya sing sampeyan ngerteni, unsur-unsur ing set kita katon ing urutan sing padha karo sing dilebokake. LinkedHashSet ing Jawa - 1

Conto 2. Nambahake duplikat menyang LinkedHashSet

Ayo dilebokake ing LinkedHashSet 7 unsur kanthi jeneng skor musik maneh lan sijine siji unsur anyar sing padha karo salah sawijining unsur sing diselehake sadurunge.
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);
       }
   }
Output program kasebut ing kene:
[Re, Do, Fa, Sol, La, Ti, Mi]
Output saka Conto loro persis padha karo conto pisanan. Kita ora bisa duwe rong unsur sing padha ing koleksi LinkedHashSet . Nalika kita nyoba kanggo sijine sing kapindho, iku mung digatèkaké.

Conto 3. Mbusak unsur saka 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);
       }
   }
Output program kasebut ing kene:
[Re, Do, Fa, Sol, La, Ti, Mi] palsu Print set kita tanpa unsur dibusak: [Re, Do, Sol, La, Ti, Mi] Print out set kita sawise printah cetha: []
Nalika sampeyan bisa ndeleng, mbusak () cara Applied kanggo unsur non-ana ora kasil kesalahan program. Iku mung ngasilake palsu yen unsur ora dibusak lan bener yen unsur ana ing LinkedHashSet banjur dibusak.

LinkedHashSet vs HashSet

Kelas loro iki minangka sedulur sing cedhak. Nanging ing jero HashSet nggunakake HashMap kanggo nyimpen obyek nalika LinkedHashSet nggunakake LinkedHashMap . Yen sampeyan ora perlu njaga urutan sisipan nanging kudu nyimpen obyek unik, luwih cocok nggunakake HashSet . Yen sampeyan kudu njaga urutan sisipan unsur banjur LinkedHashSet dadi pilihan sampeyan. Kinerja LinkedHashSet rada luwih alon tinimbang HashSet amarga LinkedHashSet nggunakake LinkedList internal kanggo njaga urutan sisipan unsur. Ayo duwe conto:
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 saka program yaiku:
regularHashSet = [65536, 3, 5, 7, 9] linkedHashSet = [7, 3, 5, 65536, 9]

Nggunakake Java LinkedHashSet ing aplikasi donya nyata

Wiwit LinkedHashSet ngidini sampeyan mriksa kanthi cepet manawa ana entri lan uga nyimpen pesenan, koleksi iki katon cukup trep kanggo mbusak duplikat saka dhaptar. Utawa, contone, ngrampungake masalah kaya item sing mentas katon ing tas. Utawa, elinga game kasebut, Pokemon Go? LinkedHashSet bisa nyimpen dhaptar Pokémon sing wis sampeyan temoni lan urutan sing ditemokake ing dalan sampeyan. Ing kasus iki, Pokémon "baleni" ora bakal ditambahake maneh ing dhaptar. Utawa, contone, dhaptar panggedhe dening tingkat sing wis ketemu ing sembarang game karo tingkat. Utawa sejarah panemune badan kosmik. LinkedHashSetngidini sampeyan mriksa kanthi cepet apa awak spasi wis ana ing dhaptar utawa ora, lan yen ora ana, banjur ditambahake menyang dhaptar. Ayo njupuk conto mbusak 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);
   }
}
Output program kasebut ing kene:
listWithDuplicates = [sawetara, unsur, karo, sawetara, duplikat, padha, kene, duplikat, duplikat] listWithoutDuplicates = [sawetara, unsur, karo, sawetara, duplikat, padha, kene] linkedHashSet = [sawetara, unsur, karo, sawetara, duplikat , padha, kene] regularHashSet = [kene, sawetara, karo, duplikat, padha, unsur, sawetara]
Komentar
  • Popular
  • Anyar
  • lawas
Sampeyan kudu mlebu kanggo ninggalake komentar
Kaca iki durung duwe komentar