CodeGym /Blog Java /rawak /Bagaimana untuk mengulangi Peta di Jawa
John Squirrels
Tahap
San Francisco

Bagaimana untuk mengulangi Peta di Jawa

Diterbitkan dalam kumpulan
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.
  1. Kaedah ForEach Loop
  2. 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!
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION