CodeGym /Blog Jawa /Acak /Set Jawa
John Squirrels
tingkat
San Francisco

Set Jawa

Diterbitake ing grup
Set minangka antarmuka ing Java Collection Framework. Sampeyan bisa nggunakake Java Set kanggo ngleksanakake koleksi unordered karo unsur unik. Ing artikel iki, kita bakal nliti antarmuka iki lan implementasine ing basa Jawa, cara kanggo nggarap set, lan uga menehi sawetara conto.

Apa Java Set

Set minangka antarmuka saka Java Collection Framework, nanging Set dudu koleksi sing diurutake, ora kaya List . Tegese unsur Java Set disimpen tanpa urutan tartamtu. Dadi ora ana kontrol ing posisi sampeyan bisa nglebokake unsur. Sampeyan uga ora bisa ngakses unsur kanthi indeks. Secara matematis, Set minangka kumpulan unsur unik. Ing kasunyatan, iki Koleksi unordered (unordered Koleksi), kang unsur podho rupo ora bisa disimpen. Yen sampeyan sengaja nambah unsur duplikat menyang Set , tumindak iki bakal diabaikan lan Set ora bakal diganti. Nanging diijini kanggo nyimpen siji unsur null ing.

Setel implementasine

Java Set minangka antarmuka, dadi sampeyan kudu nggunakake salah sawijining implementasine kanggo nggawe obyek. Iki HashSet , TreeSet lan LinkedHashSet . Ing Set s, saben unsur disimpen mung siji conto, lan implementasine beda Set nggunakake urutan beda kanggo nyimpen unsur. Ing HashSet , urutan unsur ditemtokake dening algoritma kompleks. Yen pesenan panyimpenan penting kanggo sampeyan, gunakake wadhah TreeSet , sing nyimpen obyek sing diurutake kanthi urutan munggah ing urutan perbandingan, utawa LinkedHashSet, sing nyimpen unsur ing urutan tambahan. Sets asring digunakake kanggo testing anggota supaya sampeyan bisa kanthi gampang mriksa yen obyek belongs kanggo pesawat tartamtu, supaya ing laku implementasine HashSet sing dioptimalake kanggo golek cepet biasane milih. HashSet minangka koleksi sing nggunakake nilai hash sing dibalekake kanthi metode hashCode () kanggo nyimpen unsur internal. Yaiku, ing jero HashSet<E> , obyek HashMap<E, Object> disimpen, sing nyimpen nilai HashSet minangka kunci. Nggunakake kode hash ngidini sampeyan nggoleki, nambah lan mbusak unsur kanthi cepet saka Set . LinkedHashSet minangka HashSetsing uga nyimpen unsur ing dhaptar sing disambung. HashSet normal ora njaga urutan unsur. Kaping pisanan, kanthi resmi ora ana, lan nomer loro, malah urutan internal bisa diganti kanthi dramatis nalika mung siji unsur ditambahake. Lan sampeyan bisa njaluk iterator saka LinkedHashSet lan digunakake kanggo mbukak liwat kabeh unsur ing urutan pas sing padha ditambahake menyang LinkedHashSet . Ora asring, nanging kadhangkala bisa uga perlu banget. A TreeSet minangka koleksi sing nyimpen unsur minangka wit sing diurutake nilai. Ing TreeSet<E> ana TreeMap<E, Object> sing nyimpen kabeh nilai kasebut. Lan TreeMap ikinggunakake wit binar imbang abang-ireng kanggo nyimpen unsur. Mulane, wis cepet banget nambah () , mbusak () , ngandhut () operasi.

Nggawe Obyek Set

Kanggo nggawe Obyek Setel sampeyan bisa nggunakake salah siji saka formulir sabanjure:

Set<Integer> intSet = new HashSet<>();
Set<String> vSet = new HashSet<>();
Set mySet = new LinkedHashSet();
HashSet<String> myHashset = new HashSet<>();
Punika conto prasaja, ngendi kita nggawe 2 Set s, HashSet lan LinkedHashSet , lan nambah menyang saben kanggo 5 unsur. Kita bisa nggunakake cara nambah () kanggo iki.

import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;

public class HashSetTest {
    public static void main(String[] args) {
        Set mySet = new HashSet();
        Set mySet2 = new LinkedHashSet();
//adding some string elements
        mySet.add("Stuart");
        mySet.add("Alex");
        mySet.add("Johnny");
        mySet.add("Igor");
        mySet.add("Bel");
        System.out.println(mySet);
        mySet2.add("Stuart");
        mySet2.add("Alex");
        mySet2.add("Johnny");
        mySet2.add("Igor");
        mySet2.add("Bel");
        System.out.println(mySet2);
    }
}
Punika output program:
[Alex, Igor, Stuart, Johnny, Bel] [Stuart, Alex, Johnny, Igor, Bel]
Kaya sing wis kasebut ing ndhuwur, HashSet ora njaga urutan unsur, nanging LinkedHashSet ora. Iku LinkedHashSet sing menehi kita unsur ing urutan kita nulis menyang pesawat.

Metode Set Jawa

Ing ngisor iki sawetara metode Java Set sing penting:
  • boolean add(E e) . Nambahake unsur sing ditemtokake ing set kasebut yen durung ana (operasi opsional).

  • boolean mbusak (Obyek o) . Mbusak unsur sing ditemtokake saka set iki yen ana (operasi opsional).

  • boolean removeAll(Koleksi c) . Mbusak saka set iki kabeh unsur sing ana ing koleksi kasebut (operasi opsional).

  • boolean retainAll(Koleksi c) . Mung nahan unsur ing set iki sing ana ing koleksi kasebut (operasi opsional).

  • void clear() . Mbusak kabeh unsur saka pesawat.

  • Iterator iterator() . Ngasilake iterator liwat unsur ing set iki.

  • ukuran int() . digunakake kanggo njaluk nomer unsur ing Set.

  • boolean isEmpty() . kanggo mriksa yen Set kosong utawa ora.

  • boolean ngandhut (Obyek o) . Ngasilake bener yen Set iki ngemot unsur sing ditemtokake.

  • Iterator iterator() . Ngasilake iterator liwat unsur ing set iki. Unsur sing bali ing ora urutan tartamtu.

  • Obyek [] toArray() . Ngasilake array sing ngemot kabeh unsur ing set iki. Yen pesawat iki njamin apa urutan unsur sing bali dening iterator sawijining, cara iki kudu bali unsur ing urutan padha.

Cara kasebut padha karo ArrayList , kajaba metode add(Obyek o) mung nambah obyek menyang set kasebut yen durung ana. Nilai bali saka cara bener yen obyek wis ditambahake, lan palsu digunakake. Ana uga sawetara cara sing diturunake saka Koleksi<> Antarmuka: parallelStream () , removeIf () , stream () lan forEach () cara sing diwarisake saka java.lang.Iterable Interface.

Java Setel conto operasi utama

Ing conto iki, kita nggawe Uploaded saka strings banjur pass menyang mySet nggunakake operasi Arrays.asList . Banjur kita mbusak sawetara unsur liyane, lan nambah saperangan liyane. Ing kasus iki, salah sawijining unsur ing set wis ana: ora bakal ditambahake. Kita uga bakal nyoba operasi mriksa kekosongan isEmpty () , nemtokake ukuran ukuran pesawat () lan ngresiki pesawat kabeh unsur cetha () .

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

public class HashSetTest2 {
   public static void main(String[] args) {
       //creating a string Array with some names
       String [] friends =  {"Stuart", "Ivy", "Johnny", "Alex", "Igor", "Tanya"};
       //creating a new set and adding elements from string array into it
       Set<String> mySet = new HashSet<>(Arrays.asList(friends));
       System.out.println(mySet);
       //removing two elements from the set
       mySet.remove("Igor");
       mySet.remove("Stuart");

       System.out.println(mySet);

       //adding 2 new Elements into set
       mySet.add("Dasha");
       mySet.add("Alex"); //it's second Alex, can't be added
       System.out.println(mySet);
       //cheking the size of mySet
       int size = mySet.size();
       System.out.println("The quantity of set's elements = " + size);
       //Checking if the set is empty
       System.out.println("Is mySet empty? " + mySet.isEmpty());
       //checking if some elements are in set
       System.out.println("Is Igor in set? " + mySet.contains("Igor"));
       System.out.println("Is Johnny in set? "+ mySet.contains("Johnny"));
       //deleting all elements from the set
       mySet.clear();
       System.out.println("Is mySet empty now? " + mySet.isEmpty());

   }
}
Output program kasebut ing kene:
[Alex, Igor, Stuart, Tanya, Johnny, Ivy] [Alex, Tanya, Johnny, Ivy] [Alex, Dasha, Tanya, Johnny, Ivy] Jumlah unsur set = 5 Apa mySet kosong? palsu Apa Igor ing set? palsu Apa Johnny ing set? bener Apa mySet saiki kosong? bener

Conto karo LinkedHashSet lan disetel menyang Array

Ayo nulis program liyane. Ing kono, kita bakal nggawe set adhedhasar LinkedHashSet , nambah unsur kasebut, banjur ngowahi set kasebut dadi array.

import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.Set;
   public class LinkedHashSet3 {
       public static void main(String[] args) {
           Set<String> set = new LinkedHashSet<>();
           set.add("C");
           set.add("D");
           set.add("E");
           set.add("F");
           set.add("G");
           set.add("A");
           set.add("B");
           System.out.println(set);
           set.remove("F");// removing an element from our set
           set.remove("C sharp");//trying to remove element that isn't in set
           System.out.println(set.remove("C sharp"));
           System.out.println("Print our set with elements removed: ");
           System.out.println(set);

//set to array
           String strArray[] = set.toArray(new String[set.size()]);
           System.out.println("New Array from set: ");
           System.out.println(Arrays.toString(strArray));
           System.out.println(strArray[0]);

       }
   }
Punika output program:
[C, D, E, F, G, A, B] palsu Print set kita karo unsur dibusak: [C, D, E, G, A, B] Array anyar saka set: [C, D, E, G, A, B] C

Setel conto nganggo iterator

Ayo nggawe pesawat, banjur print metu nggunakake iterator, lan banjur mbusak kabeh nomer malah saka iku, uga nggunakake iterator.

import java.util.*;

public class SetTest5
{
   public static void main(String[] args)
   {

       Set<Integer> mySet = new HashSe<>();
       for(int i = 0; i < 10; i++)
           mySet.add(i);

       Iterator iterator = mySet.iterator();

       //simple iteration
       while(iterator.hasNext()){
           int i = (int) iterator.next();
       }
       System.out.println(" " + mySet);

       //modification of mySet using iterator - removing all even numbers
       iterator = mySet.iterator();
       while(iterator.hasNext()){
           int x = (int) iterator.next();
           if(x%2 == 0) iterator.remove();
       }
       System.out.println(mySet);

       }
}
Output program kasebut ing kene:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [1, 3, 5, 7, 9]

Conto karo TreeSet

Yen ngurutake penting kanggo sampeyan, gunakake implementasine TreeSet . Ing conto cendhak iki, kita bakal ngisi set kasebut kanthi jeneng kanca, kaya ing conto sadurunge. Nanging, ing TreeSet sing diurutake , unsur-unsur kasebut bakal langsung ditulis kanthi urut. Ing kasus iki, jeneng bakal ditampilake miturut abjad.

import java.util.Set;
import java.util.TreeSet;
public class TreeSetTest {

   public static void main(String[] args) {

       Set mySet = new TreeSet<>();
       mySet.add("Stuart");
       mySet.add("Alex");
       mySet.add("Johnny");
       mySet.add("Igor");
       mySet.add("Bel");
       System.out.println(mySet);

   }
Output yaiku:
[Alex, Bel, Igor, Johnny, Stuart]

kesimpulan Brief

  • Antarmuka Java Set minangka bagéan saka Java Collections Framework.

  • Kelas sing ditindakake: AbstractSet , ConcurrentHashMap.KeySetView , ConcurrentSkipListSet , CopyOnWriteArraySet , EnumSet , HashSet , JobStateReasons , LinkedHashSet , TreeSet .

  • Implementasi Set sing paling populer yaiku HashSet , LinkedHashSet lan TreeSet .

  • Urutan unsur HashSet ditemtokake dening algoritma kompleks. Yen pesenan panyimpenan penting kanggo sampeyan, gunakake wadhah TreeSet , sing nyimpen obyek sing diurutake kanthi urutan munggah ing urutan perbandingan, utawa LinkedHashSet , sing nyimpen unsur ing urutan tambahan.

  • Paling asring, set digunakake kanggo nyoba keanggotaan. Sing, kanggo mriksa apa obyek belongs kanggo pesawat tartamtu ing pangertèn matématika. Dadi paling asring kabeh implementasi Set ing laku, HashSet biasane dipilih. Implementasi iki dioptimalake kanggo nggoleki kanthi cepet.

  • Sampeyan ora bisa nambah unsur duplikat kanggo pesawat, supaya sampeyan bisa nggunakake implementasine saka antarmuka Set kanggo nyimpen unsur unik.

  • Set ngijini sampeyan kanggo nambah mung siji unsur null.

  • Set dudu dhaptar lan ora ndhukung indeks utawa posisi unsur-unsur kasebut.

Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION