CodeGym /Java Blogu /Rastgele /Java'da bir Harita nasıl yinelenir
John Squirrels
Seviye
San Francisco

Java'da bir Harita nasıl yinelenir

grupta yayınlandı
Bu gönderide, Java'da bir Haritayı yinelemenin farklı yollarını öğreneceğiz. Yaygın yollarından bazıları ve örneklerin yardımıyla bunların nasıl kullanılacağı. Başlamadan önce, Java'daki arayüzleri ve haritaları anladığınızı varsayıyoruz . Ancak, işte size hızlı bir özet.

Java'da Harita nedir?

Bunun birçok yorumu var, ancak basitçe bu şekilde ifade edelim.
"Harita, verileri anahtar-değer çiftleri biçiminde depolamak için kullanılan Java'da bir arabirimdir."
Haritaların ne için kullanıldığını düşünüyorsanız? Veya ne zaman ihtiyaç duyulur? O halde, gerçek hayatta verileri anahtar/değer çiftleri halinde depolamamız gereken birçok durum vardır. Örneğin, bir sözlükte tek bir harfe karşılık gelen tüm kelimeler Java'da bir harita biçiminde saklanabilir.
K Uçurtma, Kral, Kore, Şövalye,..., vb.
L Lav, Hayat, Işık, Aşk, Lübnan,..., vs.
Üstelik bunu daha iyi anlamak için aşağıdaki örneklere de göz atabilirsiniz.
Anahtar Değer
Aile Kimliği Aile üyeleri
Sınıf adı öğrenci kimlikleri
Alan adı posta kodları
Alan Bloğu Ev Numaraları

Neden bir Haritayı yinelememiz gerekiyor?

Verilere erişmek, bunları değiştirmek veya kaldırmak için bir harita üzerinde gezinmemiz veya yinelememiz gerekiyor. Elimizdeki seçeneklerden bazılarını keşfedelim.

Java'da bir Haritayı yinelemenin bazı yaygın yolları nelerdir?

Bir haritayı geçmenin birçok yolu olmasına rağmen. Ancak, en verimli ve basit yollara odaklanacağız.
  1. ForEach Döngü yöntemi
  2. Yineleyiciler yöntemi
Lütfen aşağıda her iki yöntemin uygulamasını bulun.

Foreach Döngüsü yöntemini kullanma

Örnek


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()); 
		}
	}
}

Çıktı

anahtar = 1, değer = Pazartesi anahtar = 2, değer = Salı anahtar = 3, değer = Çarşamba anahtar = 4, değer = Perşembe anahtar = 5, değer = Cuma

Açıklama

Bu örnekte, harita üzerinde yineleme yapmak için foreach döngüsünü kullandık. for-each döngüsünü kullanarak, anahtar/değer çiftleri biçiminde haritadaki verilerin otomatikleştirilmiş bir "görünümünü" sağlayan bir entrySet() elde ederiz. Her entrySet bir anahtar ve karşılık gelen değerleri içerir. Gereksinimlerinize göre tüm Map.Entry<key, value> yöntemlerini kullanabileceğiniz yer . Burada, verileri konsolda görüntülemek için sadece getKey() ve getValue() kullandık . Alıştırma olarak, bu konsepte hakimiyetinizi güçlendirmek için diğer yöntemleri keşfedebilirsiniz.

Yineleyiciler yöntemini kullanma

Örnek


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());

		}
	}
}

Çıktı

anahtar = 11, değer = Kasım anahtarı = 1, değer = Ocak anahtarı = 12, değer = Aralık anahtarı = 2, değer = Şubat anahtarı = 3, değer = Mart anahtarı = 4, değer = Nisan anahtarı = 5, değer = Mayıs anahtarı = 6, değer = Haziran anahtarı = 7, değer = Temmuz anahtarı = 8, değer = Ağustos anahtarı = 9, değer = Eylül anahtarı = 10, değer = Ekim

Açıklama

Bu örnekte, harita üzerinde gezinmek / yinelemek için açık yineleyici oluşturuyoruz. İlk olarak, yineleyici sınıfını içe aktarmanız ve ardından entrySet için yineleyiciyi almanız gerekir. Şimdi haritada var olan bir sonraki varlığı kontrol etmeye devam ederken haritayı dolaşın. İşte gidiyorsun! Geçişiniz tamamlandı, aynen böyle.

Foreach döngüsü yineleyiciler yönteminden daha mı iyi?

İşinize yaradığı sürece, bir haritada gezinmek için hangi yöntemi kullandığınız önemli değildir. Performans açısından, hem for-each döngüsü hem de yineleyiciler aynı zaman karmaşıklığına sahiptir . Yani hiçbiri diğerinden daha iyi değil, neyi ne zaman kullanmanız gerektiğine bağlı.

İki yöntem arasındaki fark nedir?

for-each döngüsü, haritadaki verilerin güncellenmesine/değiştirilmesine izin vermez. Aksine, yineleyicileri kullanarak verileri kolayca değiştirebilirsiniz. Yineleyiciler sınıfı, haritadaki verileri düzenlemek/kaldırmak için uygulama sağlayarak size kolaylık sağlar. Aksine, for-each döngüsünü kullanarak harita verilerini düzenlemeye/silmeye çalışırsanız, bir ConcurrentModificationException hatası verir . Bunun nedeni, for-each döngüsünün dolaylı olarak kullanıcıya açık olmayan bir yineleyici oluşturmasıdır. Bu nedenle, herhangi bir veriyi değiştirme veya silme erişiminiz yoktur.

Hangi geçiş yöntemi ve ne zaman kullanılır?

Haritanızı yinelemek için for-each'i mi yoksa yineleyicileri mi kullanacağınızdan emin değilseniz, aşağıdaki önerileri uygulayabilirsiniz.
  • Haritayı değiştirmeniz gerekiyorsa yineleyiciyi kullanın .
  • İç içe döngüleriniz varsa (karmaşıklığı önlemek için) for-each döngüsünü kullanın .

Çözüm

Gönderinin sonunda, Java'da haritayı nasıl yineleyeceğinizi öğrendiğinizi umuyoruz. Bunları uygulamanız ve diğer geçiş yöntemlerini denemeniz teşvik edilir. Sıkışmış hissettiğinizde geri dönmekten veya soru göndermekten çekinmeyin. O zamana kadar, mutlu öğrenmeler!
Yorumlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION