লিস্ট (List), সেট (Set) এবং ম্যাপ (Map) হলো Java-র কিছু গুরুত্বপূর্ণ ডেটা স্ট্রাকচার, যা Java Collections Framework এর অন্তর্ভুক্ত। এরা বিভিন্ন ধরনের ডেটা ম্যানেজমেন্ট এবং অ্যাক্সেসে সহায়ক।
১. লিস্ট (List)
List হলো এমন একটি ডেটা স্ট্রাকচার যা একই ধরনের ডেটা সংরক্ষণ করে এবং ইনডেক্সের মাধ্যমে প্রতিটি উপাদান অ্যাক্সেসযোগ্য করে। এটি ডুপ্লিকেট মান রাখতে সক্ষম এবং ডেটা ক্রমানুসারে সংরক্ষণ করে।
লিস্টের বৈশিষ্ট্য
- ইনডেক্সিং: প্রতিটি উপাদান ইনডেক্সের মাধ্যমে অ্যাক্সেস করা যায়।
- ডুপ্লিকেট মান: একই লিস্টে একাধিকবার একই মান রাখা যায়।
- ক্রমানুসারে সংরক্ষণ: ডেটা ইনপুট ক্রমে সংরক্ষিত থাকে।
লিস্টের উদাহরণ (ArrayList)
import java.util.ArrayList;
import java.util.List;
public class ListExample {
public static void main(String[] args) {
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add("Alice"); // ডুপ্লিকেট মান গ্রহণ করা যাবে
System.out.println("Names List: " + names);
System.out.println("Name at index 1: " + names.get(1));
}
}
আউটপুট:
Names List: [Alice, Bob, Alice]
Name at index 1: Bob
ব্যাখ্যা:
- এখানে
ArrayListক্লাস ব্যবহার করে একটিListতৈরি করা হয়েছে। namesলিস্টেAliceনামে দুটি ডুপ্লিকেট মান রাখা হয়েছে, এবং ইনডেক্সের মাধ্যমে প্রতিটি উপাদান অ্যাক্সেস করা হয়েছে।
২. সেট (Set)
Set হলো এমন একটি ডেটা স্ট্রাকচার যা কোনো ডুপ্লিকেট মান রাখে না এবং এলিমেন্টগুলোকে ক্রমহীনভাবে সংরক্ষণ করে। Set সাধারণত ইউনিক ভ্যালু সংরক্ষণে ব্যবহৃত হয়, যেমন আইডি, ইউজারনেম ইত্যাদি।
সেটের বৈশিষ্ট্য
- ডুপ্লিকেট মান রাখে না: একই মান একাধিকবার যোগ করলে সেটে কেবল একটি মানই থাকবে।
- ক্রমহীনভাবে সংরক্ষণ: সাধারণত মানগুলো ক্রমহীনভাবে সংরক্ষণ করা হয়, যদিও
LinkedHashSetএবংTreeSetনির্দিষ্ট ক্রমে মান রাখতে পারে।
সেটের উদাহরণ (HashSet)
import java.util.HashSet;
import java.util.Set;
public class SetExample {
public static void main(String[] args) {
Set<String> uniqueNames = new HashSet<>();
uniqueNames.add("Alice");
uniqueNames.add("Bob");
uniqueNames.add("Alice"); // ডুপ্লিকেট মান যোগ হলেও একবারই থাকবে
System.out.println("Unique Names Set: " + uniqueNames);
}
}
আউটপুট:
Unique Names Set: [Alice, Bob]
ব্যাখ্যা:
- এখানে
HashSetব্যবহার করে একটিSetতৈরি করা হয়েছে। uniqueNamesসেটেAliceদুইবার যোগ করা হলেও সেটে কেবল একবারই সংরক্ষিত হয়েছে।
৩. ম্যাপ (Map)
Map হলো এমন একটি ডেটা স্ট্রাকচার যা key-value পেয়ারে ডেটা সংরক্ষণ করে। Map এ প্রতিটি কী ইউনিক হতে হবে, তবে বিভিন্ন কী-এর জন্য একই ভ্যালু থাকতে পারে। Map সাধারণত ডেটা খুঁজে বের করতে ব্যবহৃত হয়, যেমন কোনো আইডি দিয়ে নির্দিষ্ট ইউজার খোঁজা।
ম্যাপের বৈশিষ্ট্য
- Key-Value পেয়ার:
Mapএ ডেটা কী এবং মান (key-value) হিসেবে সংরক্ষিত হয়। - ইউনিক কী: প্রতিটি কী একবারই থাকতে পারে, তবে মানে ডুপ্লিকেট থাকা সম্ভব।
- কী এর মাধ্যমে দ্রুত অ্যাক্সেস: কী ব্যবহার করে নির্দিষ্ট মান দ্রুত অ্যাক্সেস করা যায়।
ম্যাপের উদাহরণ (HashMap)
import java.util.HashMap;
import java.util.Map;
public class MapExample {
public static void main(String[] args) {
Map<Integer, String> idToName = new HashMap<>();
idToName.put(1, "Alice");
idToName.put(2, "Bob");
idToName.put(3, "Charlie");
idToName.put(1, "David"); // কী ১ এর জন্য নতুন মান প্রদান করলে পুরনো মান প্রতিস্থাপিত হবে
System.out.println("ID to Name Map: " + idToName);
System.out.println("Name with ID 2: " + idToName.get(2));
}
}
আউটপুট:
ID to Name Map: {1=David, 2=Bob, 3=Charlie}
Name with ID 2: Bob
ব্যাখ্যা:
- এখানে
HashMapব্যবহার করে একটিMapতৈরি করা হয়েছে, যা Integer কী এবং String মান ধারণ করে। put()মেথড দিয়ে নতুন কী-মান পেয়ার যোগ করা হয়েছে এবং একই কী (১) এর জন্য মান আপডেট করা হয়েছে।
সংক্ষেপে লিস্ট, সেট এবং ম্যাপের তুলনা
| বৈশিষ্ট্য | List | Set | Map |
|---|---|---|---|
| অর্ডার মেইনটেন | ইনপুট ক্রম মেইনটেন করে | সাধারণত অর্ডার মেইনটেন করে না | কী-ভিত্তিক সংরক্ষণ; নির্দিষ্ট ক্রম নয় |
| ডুপ্লিকেট এলিমেন্ট | অনুমোদিত | অনুমোদিত নয় | কী ইউনিক হতে হবে, তবে মানে ডুপ্লিকেট থাকতে পারে |
| ডেটা অ্যাক্সেস | ইনডেক্সের মাধ্যমে অ্যাক্সেসযোগ্য | ইনডেক্স নেই | কী ব্যবহার করে মান অ্যাক্সেস করা যায় |
| **প্রধান ইমপ্লিমেন্টেশন | ArrayList, LinkedList | HashSet, LinkedHashSet, TreeSet | HashMap, LinkedHashMap, TreeMap |
লিস্ট, সেট এবং ম্যাপের ব্যবহার
- List: যেসব ক্ষেত্রে এলিমেন্ট ক্রমসহ রাখতে হয় এবং ডুপ্লিকেট এলিমেন্ট সংরক্ষণ করতে হয়, যেমন ছাত্রদের নামের তালিকা।
- Set: যেসব ক্ষেত্রে ইউনিক মান সংরক্ষণ করতে হয় এবং ক্রম গুরুত্বপূর্ণ নয়, যেমন ইউনিক আইডি বা ইমেইল সংরক্ষণ।
- Map: যেসব ক্ষেত্রে key-value পেয়ার হিসেবে ডেটা সংরক্ষণ করতে হয় এবং দ্রুত খোঁজার প্রয়োজন হয়, যেমন ID দিয়ে নির্দিষ্ট নাম খোঁজা।
সারসংক্ষেপ
- List: ক্রমানুসারে ডেটা সংরক্ষণ এবং ডুপ্লিকেট মান গ্রহণ করে।
- Set: ইউনিক মান সংরক্ষণ করে এবং সাধারণত ক্রমহীনভাবে ডেটা সংরক্ষণ করে।
- Map: key-value পেয়ারে ডেটা সংরক্ষণ করে, যেখানে কী ইউনিক থাকতে হয়।
Java-তে লিস্ট, সেট, এবং ম্যাপ ব্যবহার করে বিভিন্ন ধরনের ডেটা ম্যানেজমেন্ট এবং অ্যাক্সেস সহজ হয়, যা প্রোগ্রামের কার্যক্ষমতা এবং স্থায়িত্ব নিশ্চিত করে।