Synp
HashSet
interfeýsi amala aşyrýar Set
, hash tablisasyna esaslanýar we mysal bilen goldanýar HashMap
. Elementler sargyt edilmänsoň HashSet
, elementleriň belli bir wagtdan soň şol bir tertipde boljakdygyna kepillik ýok. Goşmak, pozmak we gözlemek amallary hash funksiýasynyň elementleri “çeleklere” dogry paýlamagy şerti bilen yzygiderli ýerine ýetiriler, soňrak ara alnyp maslahatlaşylar. Bu barada birnäçe möhüm pikir HashSet
:
- Sebäbi synp interfeýsi amala aşyrýar
Set
, diňe üýtgeşik gymmatlyklary saklap bilýär; - NULL bahalaryny saklap bilýär;
- Elementleriň goşulýan tertibi hash kody bilen hasaplanýar;
HashSet
hem ýerineSerializable
ýetirýärCloneable
.
HashSet
elementleriň sanyna (“sebetleriň” sanyna) göni proporsional bolmalydyr. Şonuň üçin öndürijiligi saklamak üçin başlangyç kuwwaty gaty ýokary (ýa-da ýük faktoryny gaty pes) goýmazlyk möhümdir. Başlangyç kuwwaty - hash tablisasyndaky öýjükleriň başlangyç sany (“gaplar”). Cellshli öýjükler doldurylsa, olaryň sany awtomatiki köpeler. Factorük faktory , kuwwatynyň awtomatiki ýokarlanmanka näderejede doly bolup biljekdiginiň ölçegidir . Haçan-da elementleriň sany başlangyç kuwwatyň we ýük faktorynyň önüminden has köp bolanda, hash tablisasy täzeden ýuwulýar (elementleriň hash kodlary täzeden hasaplanýar we alnan bahalara görä tablisa täzeden gurulýar) we san içindäki öýjükler iki esse köpelýär. Factorük faktory = Tablisa / hash tablisasynyň ululygynda saklanýan elementleriň sany Mysal üçin, tablisadaky öýjükleriň başlangyç sany 16, ýük faktory bolsa 0,75 bolsa, doldurylan öýjükleriň sany 12-e ýetende, öýjükleriň sany awtomatiki köpeler. Factorük faktory we başlangyç kuwwat öndürijilige täsir edýän iki esasy faktor . 0.75 ýük faktory ortaça gowy öndürijiligi üpjün edýär. Bu parametr köpeldilse, ýadyň ýüki azalar (sebäbi täzeden ýuwmagyň we täzeden gurmagyň sany azalýar), ýöne bu goşmak we gözlemek amallaryna täsir eder. Gaýtadan ýuwmak üçin sarp edilen wagty azaltmak üçin dogry başlangyç parametrini saýlamaly. Başlangyç kuwwaty ýük faktoryna bölünen elementleriň iň köp mukdaryndan köp bolsa, düýbünden ýuwmak amallary bolmaz. HashSet
HashMap
HashSet
HashSet
HashSet
Möhüm: HashSet
içerki sinhronizasiýa bilen maglumat gurluşy däl, şonuň üçin bir wagtyň özünde birnäçe sapak üstünde işleýän bolsa we iň bolmanda biri üýtgeşme girizjek bolsa, daşardan sinhron girişi üpjün etmeli. Bu köplenç başga bir sinhronlaşdyrylan obýektiň hasabyna amala aşyrylýar HashSet
. Şeýle obýekt ýok bolsa, onda Collections.synchronizedSet()
. Bu häzirki wagtda sinhron däl amallaryň öňüni almagyň iň oňat usulydyr HashSet
.
Set s = Collections.synchronizedSet(new HashSet(...));
HashSet konstruktorlary:
HashSet h = new HashSet();
- deslapky konstruktor. Adaty başlangyç kuwwat 16, ýük faktory 0,75.HashSet h = new HashSet(int initialCapacity)
- berlen başlangyç kuwwatly konstruktor. Factorük faktory - 0.75.HashSet h = new HashSet(int initialCapacity, float loadFactor);
- berlen başlangyç kuwwaty we ýük faktory bolan konstruktor.HashSet h = new HashSet(Collection C)
- başga ýygyndydan elementleri goşýan konstruktor.
HashSet
:
import java.util.*;
class Test
{
public static void main(String[]args)
{
HashSet<String> h = new HashSet<String>();
// Add elements to the HashSet using the add() method
h.add("India");
h.add("Australia");
h.add("South Africa");
h.add("India");// try to add another same element
// Print the elements of the HashSet to the console
System.out.println(h);
System.out.println("List contains India or not:" +
h.contains("India"));
// Remove elements from the set using the remove() method
h.remove("Australia");
System.out.println("List after removing Australia:"+h);
// Loop through the elements of the HashSet using an iterator:
System.out.println("Iterating over list:");
Iterator<String> i = h.iterator();
while (i.hasNext())
System.out.println(i.next());
}
}
Netije:
[South Africa, Australia, India]
List contains India or not:true
List after removing Australia:[South Africa, India]
Iterating over list:
South Africa
India
Interfeýsi amala aşyrýan ähli synplar Set
içerki amallar bilen goldanýar Map
. HashSet
ulanýan elementleri saklaýar HashMap
. HashMap
Bir element goşmak üçin esasy element jübüti hökmünde görkezilmeli bolsa-da , HashSet
diňe baha goşulýar. Aslynda, geçýän baha HashSet
obýektiň açarydyr HashMap
we hemişelik baha hökmünde ulanylýar HashMap
. Şeýlelik bilen, her açar bahasy jübütinde ähli düwmeleriň bahasy deň bolar. Durmuşa geçirmek :HashSet
java doc
private transient HashMap map;
// Constructor - 1
// All constructors implicitly create a HashMap object.
public HashSet()
{
// Create an implicit HashMap object
map = new HashMap();
}
// Constructor- 2
public HashSet(int initialCapacity)
{
// Create an implicit HashMap object
map = new HashMap(initialCapacity);
}
// An object of the Object class, each time acting as a value in the HashMap
private static final Object PRESENT = new Object();
add()
Y usulyna seretseňiz HashSet
:
public boolean add(E e)
{
return map.put(e, PRESENT) == null;
}
add()
Y usulynyň içerki obýektdäki HashSet
usuly , açar hökmünde goşuljak elementi we PRESENT hemişelik bahasy hökmünde çagyrýandygyny görüp bilersiňiz . Usul hem edil şonuň ýaly işleýär . Içerki obýekt usuly diýilýär : put()
HashMap
remove()
remove()
HashMap
public boolean remove(Object o)
{
return map.remove(o) == PRESENT;
}
HashSet
hash tablisasyna esaslanýar we goşmak, aýyrmak ýa-da gözlemek amallary ortaça hemişelik (O (1)) wagtda tamamlanar . Usullar HashSet
:
boolean add(E e)
HashSet
: ýok bolsa bir element goşýar , ýöne şeýle element eýýäm bar bolsa, usul ýalňyş gaýdyp gelýär .void clear():
toplumdan ähli elementleri aýyrýar.boolean contains(Object o)
: Berlen element toplumda bar bolsa hakyky bolýar.boolean remove(Object o)
: Eger bar bolsa, berlen elementi toplumdan aýyrýar.Iterator iterator()
: Toplumyň elementleri üçin iterator görkezýär.boolean isEmpty()
: Toplumda elementler ýok bolsa hakyky bolýar.Object clone()
: Surfaceerüsti klonirlemäni ýerine ýetirýärHashSet
.
GO TO FULL VERSION