এই পোস্টে, আমরা জাভাতে একটি মানচিত্র পুনরাবৃত্তি করার বিভিন্ন উপায় শিখব। এর কিছু সাধারণ উপায় এবং কীভাবে সেগুলি ব্যবহার করবেন উদাহরণের সাহায্যে। শুরু করার আগে, আমরা ধরে নিচ্ছি আপনি জাভাতে
ইন্টারফেস এবং
মানচিত্র বুঝতে পেরেছেন। যাইহোক, এখানে আপনার জন্য একটি দ্রুত সংকলন আছে.
জাভা একটি মানচিত্র কি?
এটির অনেক ব্যাখ্যা আছে, তবে আসুন এটিকে এভাবে রাখি।
"মানচিত্র হল জাভাতে একটি ইন্টারফেস, যা কী-মান জোড়া আকারে ডেটা সংরক্ষণ করতে ব্যবহৃত হয়।"
আপনি কি জন্য মানচিত্র ব্যবহার করা হয় সম্পর্কে চিন্তা করা হয়? বা কখন তাদের প্রয়োজন হয়? তারপরে বাস্তব জীবনে এমন অনেক পরিস্থিতি রয়েছে যখন আমাদের কী-মান জোড়ায় ডেটা সংরক্ষণ করতে হবে। উদাহরণস্বরূপ, একটি অভিধানে একটি একক অক্ষরের সাথে সম্পর্কিত সমস্ত শব্দ জাভাতে একটি মানচিত্রের আকারে সংরক্ষণ করা যেতে পারে।
কে |
ঘুড়ি, রাজা, কোরিয়া, নাইট,..., ইত্যাদি |
এল |
লাভা, জীবন, আলো, প্রেম, লেবানন,..., ইত্যাদি। |
তাছাড়া, আপনি এটি আরও ভালভাবে বুঝতে নিম্নলিখিত উদাহরণগুলি দেখতে পারেন।
চাবি |
মান |
পারিবারিক আইডি |
পরিবারের সদস্যগণ |
শ্রেণির নাম |
ছাত্র আইডি |
এলাকার নাম |
জিপ কোড |
এলাকা ব্লক |
বাড়ির নম্বর |
কেন আমরা একটি মানচিত্রের মাধ্যমে পুনরাবৃত্তি করতে হবে?
ডেটা অ্যাক্সেস, পরিবর্তন বা অপসারণের জন্য আমাদের একটি মানচিত্রের উপর দিয়ে অতিক্রম বা পুনরাবৃত্তি করতে হবে। আসুন আমাদের কাছে থাকা কিছু বিকল্পগুলি অন্বেষণ করি।
জাভাতে একটি মানচিত্র পুনরাবৃত্তি করার কিছু সাধারণ উপায় কি কি?
যদিও একটি মানচিত্র অতিক্রম করার অনেক উপায় আছে। যাইহোক, আমরা সবচেয়ে কার্যকরী এবং সহজ উপায়ে ফোকাস করব।
- ForEach লুপ পদ্ধতি
- ইটারেটর পদ্ধতি
নীচের উভয় পদ্ধতির বাস্তবায়ন খুঁজুন.
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>();
businessDays.put("1", "Monday");
businessDays.put("2", "Tuesday");
businessDays.put("3", "Wednesday");
businessDays.put("4", "Thursday");
businessDays.put("5", "Friday");
for (Map.Entry<String, String> entry : businessDays.entrySet())
{
System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue());
}
}
}
আউটপুট
কী = 1, মান = সোমবার কী = 2, মান = মঙ্গলবার কী = 3, মান = বুধবার কী = 4, মান = বৃহস্পতিবার কী = 5, মান = শুক্রবার
ব্যাখ্যা
এই উদাহরণে আমরা মানচিত্রের উপর পুনরাবৃত্তি করতে foreach লুপ ব্যবহার করেছি। প্রতিটি লুপ ব্যবহার করে, আমরা একটি
এন্ট্রিসেট() পাই যা কী-মান জোড়া আকারে মানচিত্রে ডেটার একটি স্বয়ংক্রিয় "ভিউ" প্রদান করে। প্রতিটি এন্ট্রিসেটে একটি কী এবং সংশ্লিষ্ট মান থাকে। যেখানে আপনি আপনার প্রয়োজনীয়তা অনুযায়ী
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>();
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");
Iterator<Map.Entry<String, String>> iterator = monthsInAYear.entrySet().iterator();
while (iterator.hasNext())
{
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, মান = অক্টোবর
ব্যাখ্যা
এই উদাহরণে, আমরা মানচিত্রের উপর দিয়ে অতিক্রম/পুনরাবৃত্তি করতে সুস্পষ্ট পুনরাবৃত্তিকারী তৈরি করি। প্রথমে, আপনাকে ইটারেটর ক্লাস ইম্পোর্ট করতে হবে এবং তারপরে এন্ট্রিসেটের জন্য ইটারেটর পেতে হবে। এখন মানচিত্রটি অতিক্রম করুন এবং মানচিত্রে বিদ্যমান পরবর্তী সত্তাটি পরীক্ষা করতে থাকুন। এই নাও! আপনার ট্রাভার্সাল সম্পূর্ণ, ঠিক যে মত.
Foreach লুপ কি পুনরাবৃত্তি পদ্ধতির চেয়ে ভাল?
একটি মানচিত্রের ট্রাভার্সালের জন্য আপনি কোন পদ্ধতিটি ব্যবহার করেন তা বিবেচ্য নয় যতক্ষণ না এটি আপনার জন্য কাজ করে।
কর্মক্ষমতার পরিপ্রেক্ষিতে, প্রতিটি লুপ এবং পুনরাবৃত্তিকারী উভয়েরই একই সময়ের জটিলতা রয়েছে । সুতরাং কোনটিই অন্যটির চেয়ে ভাল নয়, এটি নির্ভর করে আপনি কী এবং কখন ব্যবহার করবেন তার উপর।
দুটি পদ্ধতির মধ্যে পার্থক্য কি?
প্রতিটি লুপ মানচিত্রের ডেটা আপডেট/পরিবর্তন করার অনুমতি দেয় না। বিপরীতে, আপনি ইটারেটর ব্যবহার করে সহজেই ডেটা পরিবর্তন করতে পারেন। পুনরাবৃত্ত শ্রেণী মানচিত্রের ডেটা সম্পাদনা/মুছে ফেলার জন্য বাস্তবায়ন প্রদান করে আপনাকে সুবিধা দেয়। বিপরীতভাবে, আপনি যদি প্রতিটি লুপ ব্যবহার করে মানচিত্রের ডেটা সম্পাদনা/মোছার চেষ্টা করেন, তাহলে এটি একটি
ConcurrentModificationException নিক্ষেপ করবে । এর কারণ হল যে প্রতিটি লুপ পরোক্ষভাবে একটি পুনরাবৃত্তিকারী তৈরি করে, যা ব্যবহারকারীর কাছে প্রকাশ পায় না। অতএব, আপনার কাছে কোনো ডেটা পরিবর্তন বা মুছে ফেলার অ্যাক্সেস নেই।
কোন ট্রাভার্সাল পদ্ধতি ব্যবহার করবেন এবং কখন?
আপনি যদি নিশ্চিত না হন যে আপনার মানচিত্রটি পুনরাবৃত্তি করার জন্য প্রতিটির জন্য বা পুনরাবৃত্তিকারী ব্যবহার করবেন কিনা, তাহলে আপনি নিম্নলিখিত পরামর্শগুলি গ্রহণ করতে পারেন।
- যদি আপনাকে মানচিত্রটি পরিবর্তন করতে হয় তবে পুনরাবৃত্তিকারী ব্যবহার করুন ।
- আপনার যদি নেস্টেড লুপ থাকে (জটিলতা এড়াতে) তাহলে প্রতিটি লুপ ব্যবহার করুন ।
উপসংহার
পোস্টের শেষে, আমরা আশা করি আপনি শিখেছেন কিভাবে জাভাতে মানচিত্র পুনরাবৃত্তি করতে হয়। আপনাকে এইগুলি অনুশীলন করতে এবং পাশাপাশি ট্রাভার্সালের অন্যান্য পদ্ধতিগুলিও চেষ্টা করার জন্য উত্সাহিত করা হয়। আপনি যখনই আটকে থাকবেন তখন নির্দ্বিধায় ফিরে যান বা প্রশ্ন পোস্ট করুন। ততক্ষণ, খুশি শেখা!