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:
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.
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:
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:
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:
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:
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.
GO TO FULL VERSION