CodeGym /وبلاگ جاوا /Random-FA /چگونه یک نقشه را در جاوا تکرار کنیم
John Squirrels
مرحله
San Francisco

چگونه یک نقشه را در جاوا تکرار کنیم

در گروه منتشر شد
در این پست با روش های مختلف برای تکرار نقشه در جاوا آشنا می شویم. برخی از راه های رایج آن و نحوه استفاده از آنها با کمک مثال ها. قبل از شروع، فرض می کنیم که رابط ها و نقشه ها را در جاوا درک می کنید. با این حال، در اینجا یک جمع بندی سریع برای شما آورده شده است.

نقشه در جاوا چیست؟

تفاسیر زیادی از این موضوع وجود دارد، اما اجازه دهید به سادگی آن را اینگونه بیان کنیم.
نقشه یک رابط در جاوا است که برای ذخیره داده ها در قالب جفت های کلید-مقدار استفاده می شود.
اگر به این فکر می کنید که نقشه ها برای چه استفاده می شوند؟ یا چه زمانی به آنها نیاز است؟ سپس موقعیت های زیادی در زندگی واقعی وجود دارد که ما نیاز به ذخیره داده ها در جفت های کلید-مقدار داریم. به عنوان مثال، تمام کلمات مربوط به یک حرف در یک فرهنگ لغت را می توان در قالب یک نقشه در جاوا ذخیره کرد.
ک بادبادک، پادشاه، کره، شوالیه،...، و غیره.
L گدازه، زندگی، نور، عشق، لبنان و... و غیره.
علاوه بر این، برای درک بهتر این موضوع می توانید به مثال های زیر نگاهی بیندازید.
کلید ارزش
شناسه خانواده اعضای خانواده
نام کلاس شناسنامه های دانشجویی
نام منطقه کدهای پستی
بلوک منطقه شماره خانه

چرا باید از طریق نقشه تکرار کنیم؟

برای دسترسی، اصلاح یا حذف داده‌ها، باید روی یک نقشه پیمایش یا تکرار کنیم. بیایید برخی از گزینه های موجود را بررسی کنیم.

چند راه متداول برای تکرار نقشه در جاوا چیست؟

اگرچه راه های زیادی برای عبور از نقشه وجود دارد. با این حال، ما روی کارآمدترین و ساده ترین راه ها تمرکز خواهیم کرد.
  1. متد ForEach Loop
  2. روش Iterators
لطفا پیاده سازی هر دو روش را در زیر بیابید.

با استفاده از روش حلقه Foreach

مثال

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

خروجی

کلید = 1، مقدار = کلید دوشنبه = 2، مقدار = کلید سه شنبه = 3، مقدار = کلید چهارشنبه = 4، مقدار = کلید پنجشنبه = 5، مقدار = جمعه

توضیح

در این مثال از حلقه foreach برای تکرار روی نقشه استفاده کردیم. با استفاده از حلقه for-each، یک enterSet() دریافت می کنیم که "نمای" خودکار داده های موجود در نقشه را به شکل جفت های کلید-مقدار ارائه می دهد. هر ورودی شامل یک کلید و مقادیر مربوطه است. جایی که می توانید از همه روش های Map.Entry<key, value> بر اساس نیاز خود استفاده کنید. در اینجا، ما فقط از getKey() و getValue() برای نمایش داده ها در کنسول استفاده کرده ایم. به عنوان یک تمرین، می توانید بقیه روش ها را برای تقویت تسلط بر این مفهوم کشف کنید.

با استفاده از روش Iterators

مثال

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

		}
	}
}

خروجی

کلید = 11، مقدار = کلید نوامبر = 1، مقدار = کلید ژانویه = 12، مقدار = کلید دسامبر = 2، مقدار = کلید فوریه = 3، مقدار = کلید مارس = 4، مقدار = کلید آوریل = 5، مقدار = کلید می = 6، مقدار = کلید ژوئن = 7، مقدار = کلید جولای = 8، مقدار = کلید آگوست = 9، مقدار = کلید سپتامبر = 10، مقدار = اکتبر

توضیح

در این مثال، ما تکرار کننده صریح برای پیمایش/تکرار روی نقشه ایجاد می کنیم. ابتدا باید کلاس iterator را وارد کنید و سپس iterator را برای enterSet دریافت کنید. اکنون در حالی که موجودیت بعدی موجود در نقشه را بررسی می کنید، نقشه را طی کنید. شما بروید! پیمایش شما کامل است، درست مثل آن.

آیا حلقه Foreach بهتر از روش iterators است؟

مهم نیست که از کدام روش برای پیمایش نقشه استفاده می کنید، تا زمانی که کار را برای شما انجام دهد. از نظر عملکرد، هم برای هر حلقه و هم تکرارکننده ها پیچیدگی زمانی یکسانی دارند . بنابراین هیچ کدام بهتر از دیگری نیست، بستگی به این دارد که چه چیزی و چه زمانی باید استفاده کنید.

تفاوت این دو روش چیست؟

حلقه for-each اجازه به روز رسانی/تغییر داده ها در نقشه را نمی دهد. برعکس، شما به راحتی می توانید داده ها را با استفاده از تکرار کننده ها تغییر دهید. کلاس iterators با ارائه پیاده سازی برای ویرایش/حذف داده ها در نقشه، شما را تسهیل می کند. برعکس، اگر سعی کنید داده های نقشه را با استفاده از حلقه for-each ویرایش/حذف کنید، یک ConcurrentModificationException ایجاد می کند . دلیل این امر این است که حلقه for-eve به طور ضمنی یک تکرار کننده ایجاد می کند که در معرض کاربر قرار نمی گیرد. از این رو، شما دسترسی به تغییر یا حذف هیچ داده ای را ندارید.

از کدام روش پیمایش و چه زمانی استفاده کنیم؟

اگر مطمئن نیستید که از for-each یا تکرارکننده ها برای تکرار نقشه خود استفاده کنید، می توانید از پیشنهادات زیر استفاده کنید.
  • اگر باید نقشه را تغییر دهید از تکرار کننده استفاده کنید .
  • اگر حلقه های تو در تو دارید (برای جلوگیری از پیچیدگی) از حلقه برای هر استفاده کنید .

نتیجه

تا پایان پست، امیدواریم نحوه تکرار نقشه در جاوا را یاد گرفته باشید. شما تشویق می‌شوید اینها را تمرین کنید و روش‌های دیگر پیمایش را نیز امتحان کنید. با خیال راحت هر زمان که احساس کردید گیر کرده اید، به عقب برگردید یا سوالات خود را ارسال کنید. تا آن زمان، یادگیری مبارک!
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION