1. Sakumpulan pasangan kunci-nilai.
Ing Jawa, koleksi liyane sing menarik (sacara umum) yaiku Map
. Kadhangkala struktur data iki uga disebut kamus.
Iku padha karo Set
koleksi, nanging nyimpen pesawat saka "pasangan" unsur tinimbang pesawat saka unsur, Saben pasangan ing kasusun Map
saka rong unsur: "tombol" lan "nilai".
Contone, sampeyan pengin program sampeyan nyimpen jeneng karyawan lan gaji, utawa jeneng rekan kerja lan umur. Banjur sampeyan butuh tabel kaya iki:
jeneng | Umur |
---|---|
Elon | 21 |
Jeff | 22 |
Bill | 48 |
Warren | ? |
Saben baris ngemot saperangan nilai. Kita bakal nyebut jeneng minangka kunci pasangan , lan umur minangka nilai pasangan .
Kabeh pasangan pasangan iki minangka peta kita ( Map
).
Kunci pasangan bisa apa wae kajaba null
. Tombol kudu unik: siji peta ora bisa ngemot rong tombol sing padha.
2. HashMap
kelas
Kelas HashMap
minangka Map
koleksi paling populer. Ing tangan siji, meh padha karo HashSet lan duwe kabeh cara. Ing sisih liya, kaya dhaptar ( ArrayList
) sing bisa nggunakake tembung (utawa apa wae) minangka indeks.
Sampeyan bisa nggawe HashMap
statement nggunakake statement kaya iki:
HashMap<KeyType, ValueType> name = new HashMap<KeyType, ValueType>();
Endi KeyType
jinis tombol ing pasangan sing disimpen, lan ValueType
minangka jinis nilai ing pasangan sing disimpen ing HashMap
koleksi.
Kelas kasebut HashMap
duwe metode kaya iki:
Metode | Katrangan |
---|---|
|
Nambah pasangan ( key , value ) menyang koleksi |
|
Ngasilake nilai sing ana gandhengane karo kunci. |
|
Priksa manawa ana kunci ing koleksi kasebut |
|
Priksa manawa ana nilai ing koleksi kasebut |
|
Mbusak unsur saka koleksi |
|
Mbusak koleksi, mbusak kabeh unsur |
|
Ngasilake nomer pasangan kunci-nilai ing koleksi |
|
Ngasilake set tombol ing koleksi |
|
Ngasilake set sing ngemot unsur koleksi |
|
Ngasilake set ( Set ) kabeh pasangan ( Map.Entry ) ing koleksi. |
Nambah unsur menyang aHashMap
Unsur ditambahake menyang peta minangka pasangan nggunakake put()
metode kasebut. Tombol kasebut dilewati minangka argumen pisanan, lan nilai kasebut dilewati minangka nomer loro.
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("Elon", 21);
map.put("Jeff", 22);
map.put("Bill", 48);
map.put("Warren", null);
Nalika nambahake pasangan kunci-nilai, yen kunci wis ana ing koleksi, banjur nilai lawas diganti karo nilai anyar.
Prilaku iki ndadekake HashMap
kaya array utawa dhaptar sing indeks minangka tembung ( String
) tinimbang angka.
Meh kabeh jinis bisa dadi KeyType utawa ValueType. Ana sawetara syarat tambahan cilik kanggo KeyType, lan sampeyan bakal sinau babagan nalika sinau koleksi luwih rinci ing nggoleki Java Collections.
3. Subset a HashMap
: kumpulan tombol
Kita mung pengin nampilake kabeh entri ing a HashMap
ing layar. Kepiye carane nindakake iki? Kanggo nindakake iki, kita kudu ngerti carane mbukak kabeh entri ing HashMap
. Iki bisa ditindakake kanthi pirang-pirang cara.
Cara sing paling gampang yaiku ngubengi tombol
HashMap
entri ora diwenehi nomer urut, supaya daur ulang karo counter ora bisa ing kene. Nanging kita bisa entuk set kunci kanthi nggunakake keySet()
metode kasebut, lan sampeyan wis ngerti carane ngulang set:
Kode | Katrangan |
---|---|
|
Loop liwat tombol saka map Entuk nilai sing digandhengake karo tombol |
Cara kasebut keySet()
ngasilake set tombol. Sampeyan bisa nggunakake set iki kanthi rong cara:
Notasi kompak | Notasi dawa |
---|---|
|
|
4. Looping liwat pasangan kunci-nilai
Ana uga cara sing luwih rumit: sampeyan bisa ngowahi a Map
dadi set pasangan kunci-nilai , banjur ngubengi unsur-unsur set kasebut, kaya sing wis kita sinau.
Koleksi kasebut HashMap
nduweni kelas pembantu sing nyimpen pasangan kunci-nilai. Iku katon kira-kira kaya iki:
class Entry<KeyType, ValueType>
{
private KeyType key;
private ValueType value;
public KeyType getKey()
{
return this.key;
}
public ValueType getValue()
{
return this.value;
}
}
Asil nelpon entrySet()
metode ing obyek bakal dadi :HashMap<KeyType, ValueType>
Set<Entry<KeyType, ValueType>>
Set<Entry<KeyType, ValueType>> name = map.entrySet();
Ing kene kita duwe Set
kelas umum kanthi parameter jinis, sing dadi jinis umum ( Entry
) kanthi rong parameter jinis.
Gampang banget kanggo pamula bingung babagan iki. Nanging yen sampeyan ngerti, sampeyan bisa nulis kode kaya:
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("Elon", 21);
map.put("Jeff", 22);
map.put("Bill", 48);
map.put("Warren", null);
Set<Map.Entry<String, Integer>> entries = map.entrySet();
for(Map.Entry<String, Integer> pair: entries)
{
String key = pair.getKey();
Integer value = pair.getValue();
System.out.println(key + " --> " + value);
}
Sing jarene, kode iki bisa disederhanakake:
Pisanan, sampeyan bisa nglumpati nggawe variabel sing kapisah entries
lan mung nelpon entrySet()
metode kasebut langsung ing for
daur ulang:
for(Map.Entry<String, Integer> pair: map.entrySet())
{
String key = pair.getKey();
Integer value = pair.getValue();
System.out.println(key + " --> " + value);
}
Kapindho, sampeyan bisa nggunakake operator sing mentas dienalake var
kanggo nemtokake jinis pasangan nilai kunci kanthi otomatis :
for(var pair: map.entrySet())
{
String key = pair.getKey();
Integer value = pair.getValue();
System.out.println(key + " --> " + value);
}
Ora ala, ta?
5. Comparison saka ArrayList
lanHashMap
A HashMap
banget meh podo karo ArrayList
sing ngidini strings (utawa jinis liyane) digunakake minangka indeks (tombol).
Yen sampeyan nggunakake Integer
tombol ing HashMap
, banjur dadi luwih padha karo ArrayList
. Ayo mbandhingake:
Kode karo ArrayList<String> | Kode nganggo HashMap<Integer, String> |
---|---|
|
|
GO TO FULL VERSION