Dalam siaran ini, kita akan mempelajari cara yang berbeza untuk mengulang Peta di Jawa. Beberapa cara biasa dan cara menggunakannya dengan bantuan contoh. Sebelum bermula, kami menganggap anda memahami
antara muka dan
peta dalam Java. Walau bagaimanapun, berikut ialah imbasan ringkas untuk anda.
Apakah Peta di Jawa?
Terdapat banyak tafsiran tentang perkara ini, tetapi mari kita letakkannya seperti ini.
"Peta ialah antara muka dalam Java, yang digunakan untuk menyimpan data dalam bentuk pasangan nilai kunci."
Jika anda berfikir tentang apakah peta digunakan? Atau bilakah mereka diperlukan? Kemudian terdapat banyak situasi dalam kehidupan sebenar apabila kita perlu menyimpan data dalam pasangan nilai kunci. Sebagai contoh, semua perkataan yang sepadan dengan satu huruf dalam kamus boleh disimpan dalam bentuk peta di Jawa.
K |
Layang-layang, Raja, Korea, Knight,..., dll. |
L |
Lava, Kehidupan, Cahaya, Cinta, Lubnan,..., dll. |
Selain itu, anda boleh melihat contoh berikut untuk memahami perkara ini dengan lebih baik.
kunci |
Nilai |
ID Keluarga |
Ahli keluarga |
Nama Kelas |
ID pelajar |
Nama Kawasan |
Poskod |
Blok Kawasan |
Nombor Rumah |
Mengapakah kita perlu mengulangi melalui Peta?
Kita perlu merentasi atau mengulangi peta untuk mengakses, mengubah suai atau mengalih keluar data. Mari kita terokai beberapa pilihan yang kita ada.
Apakah beberapa cara biasa untuk mengulang Peta di Jawa?
Walaupun terdapat banyak cara untuk melintasi peta. Walau bagaimanapun, kami akan memberi tumpuan kepada cara yang paling berkesan dan mudah.
- Kaedah ForEach Loop
- Kaedah Iterator
Sila dapatkan pelaksanaan kedua-dua kaedah di bawah.
Menggunakan kaedah Foreach Loop
Contoh
import java.util.Map;
import java.util.HashMap;
public class ForEachDemo {
public static void main(String[] args) {
Map<String, String> businessDays = new HashMap<String, String>();
// store business days i-e; key/value pairs in the Map
businessDays.put("1", "Monday");
businessDays.put("2", "Tuesday");
businessDays.put("3", "Wednesday");
businessDays.put("4", "Thursday");
businessDays.put("5", "Friday");
// Iterating over the Map.entrySet() using map.forEach
for (Map.Entry<String, String> entry : businessDays.entrySet())
{
System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue());
}
}
}
Pengeluaran
kunci = 1, nilai = kunci Isnin = 2, nilai = kunci Selasa = 3, nilai = kunci Rabu = 4, nilai = kunci Khamis = 5, nilai = Jumaat
Penjelasan
Dalam contoh ini kami menggunakan gelung foreach untuk lelaran ke atas peta. Dengan menggunakan gelung untuk setiap, kami mendapat
entrySet() yang menyediakan "paparan" automatik data dalam peta, dalam bentuk pasangan nilai kunci. Setiap entrySet mengandungi kunci dan nilai yang sepadan. Di mana anda boleh menggunakan semua kaedah
Map.Entry<key, value> mengikut keperluan anda. Di sini, kami hanya menggunakan
getKey() dan
getValue() untuk memaparkan data pada konsol. Sebagai latihan, anda boleh meneroka kaedah lain untuk mengukuhkan arahan anda tentang konsep ini.
Menggunakan kaedah Iterator
Contoh
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class MapIterator {
public static void main(String[] args) {
Map<String, String> monthsInAYear = new HashMap<String, String>();
// store business days i-e; key/value pairs in the Map
monthsInAYear.put("1", "January");
monthsInAYear.put("2", "February");
monthsInAYear.put("3", "March");
monthsInAYear.put("4", "April");
monthsInAYear.put("5", "May");
monthsInAYear.put("6", "June");
monthsInAYear.put("7", "July");
monthsInAYear.put("8", "August");
monthsInAYear.put("9", "September");
monthsInAYear.put("10", "October");
monthsInAYear.put("11", "November");
monthsInAYear.put("12", "December");
// iterate map / traverse the map using using iterator
Iterator<Map.Entry<String, String>> iterator = monthsInAYear.entrySet().iterator();
while (iterator.hasNext())
{
// check if next entry exists in the map
Map.Entry<String, String> entry = iterator.next();
System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue());
}
}
}
Pengeluaran
kunci = 11, nilai = kunci November = 1, nilai = kunci Januari = 12, nilai = kunci Disember = 2, nilai = kunci Februari = 3, nilai = kunci Mac = 4, nilai = kunci April = 5, nilai = kunci Mei = 6, nilai = kunci Jun = 7, nilai = kunci Julai = 8, nilai = kunci Ogos = 9, nilai = kunci September = 10, nilai = Oktober
Penjelasan
Dalam contoh ini, kami mencipta lelaran eksplisit untuk melintasi / mengulang ke atas peta. Mula-mula, anda perlu mengimport kelas iterator, dan kemudian dapatkan iterator untuk entrySet. Sekarang rentas peta sambil terus menyemak entiti seterusnya yang wujud pada peta. Itupun dia! Pelayaran anda selesai, begitu sahaja.
Adakah gelung Foreach lebih baik daripada kaedah iterator?
Tidak kira kaedah mana yang anda gunakan untuk melintasi peta asalkan ia berfungsi untuk anda.
Dari segi prestasi, kedua-dua untuk setiap gelung dan iterator mempunyai kerumitan masa yang sama . Jadi tidak ada yang lebih baik daripada yang lain, ia bergantung pada apa yang anda perlu gunakan dan bila.
Apakah perbezaan antara kedua-dua kaedah?
Gelung untuk setiap tidak membenarkan untuk mengemas kini/mengubah suai data dalam peta. Sebaliknya, anda boleh mengubah suai data dengan mudah menggunakan iterator. Kelas iterator memudahkan anda dengan menyediakan pelaksanaan untuk mengedit/mengalih keluar data dalam peta. Sebaliknya, jika anda cuba mengedit/memadam data peta menggunakan gelung untuk setiap, ia akan membuang
ConcurrentModificationException . Sebab untuk ini ialah gelung untuk setiap satu secara tersirat mencipta lelaran, yang tidak didedahkan kepada pengguna. Oleh itu, anda tidak mempunyai akses untuk mengubah suai atau memadam sebarang data.
Kaedah traversal yang manakah hendak digunakan dan bila?
Jika anda tidak pasti sama ada untuk menggunakan for-each atau iterator untuk mengulang peta anda, maka anda boleh mengambil cadangan berikut.
- Gunakan iterator jika anda perlu mengubah suai peta.
- Gunakan gelung untuk setiap jika anda mempunyai gelung bersarang (untuk mengelakkan kerumitan).
Kesimpulan
Menjelang penghujung siaran, kami harap anda telah mempelajari cara untuk mengulang peta dalam Java. Anda digalakkan untuk mengamalkan ini dan mencuba kaedah traversal lain juga. Jangan ragu untuk melompat kembali atau menyiarkan soalan apabila anda berasa buntu. Sehingga itu, selamat belajar!
GO TO FULL VERSION