Dart প্রোগ্রামিং ভাষায় Collections হল বিভিন্ন ধরনের ডেটা একত্রিত করার জন্য ব্যবহৃত একটি ডাটা স্ট্রাকচার। Dart এ প্রধানত তিনটি ধরনের কালেকশন রয়েছে:
- Lists (লিস্টস)
- Sets (সেটস)
- Maps (ম্যাপস)
এই কালেকশনগুলি বিভিন্ন ধরনের ডেটা ধারণ করতে এবং পরিচালনা করতে ব্যবহৃত হয়। নিচে প্রতিটি কালেকশনের বৈশিষ্ট্য এবং উদাহরণ সহ আলোচনা করা হলো।
1. Lists (লিস্টস)
Lists হল একাধিক মানের একটি অ্যারে। এটি একটি অর্ডারড কালেকশন, যেখানে ডেটা ইনডেক্স দ্বারা অ্যাক্সেস করা হয়। Dart এ, লিস্টগুলি সাধারণত List ক্লাস দ্বারা উপস্থাপন করা হয়।
উদাহরণ:
void main() {
List<String> fruits = ['Apple', 'Banana', 'Cherry'];
// লিস্টের মান অ্যাক্সেস করা
print(fruits[0]); // Output: Apple
// লিস্টে নতুন মান যোগ করা
fruits.add('Orange');
print(fruits); // Output: [Apple, Banana, Cherry, Orange]
// লিস্টের দৈর্ঘ্য
print(fruits.length); // Output: 4
}
2. Sets (সেটস)
Sets হল অর্ডারড কালেকশন যা ইউনিক (unique) মান ধারণ করে। এটি কোনও ডুপ্লিকেট মান রাখে না এবং একটি Set ক্লাস দ্বারা উপস্থাপন করা হয়।
উদাহরণ:
void main() {
Set<String> fruits = {'Apple', 'Banana', 'Cherry'};
// সেটে মান যোগ করা
fruits.add('Banana'); // ডুপ্লিকেট হবে না
fruits.add('Orange');
print(fruits); // Output: {Apple, Banana, Cherry, Orange}
// সেটের দৈর্ঘ্য
print(fruits.length); // Output: 4
}
3. Maps (ম্যাপস)
Maps হল কী-মান জোড়ের একটি কালেকশন। প্রতিটি মান একটি কী দ্বারা অ্যাক্সেস করা হয়। Dart এ, ম্যাপগুলি Map ক্লাস দ্বারা উপস্থাপন করা হয়।
উদাহরণ:
void main() {
Map<String, int> ages = {
'Alice': 30,
'Bob': 25,
'Charlie': 35
};
// মান অ্যাক্সেস করা
print(ages['Alice']); // Output: 30
// ম্যাপে নতুন মান যোগ করা
ages['David'] = 28;
print(ages); // Output: {Alice: 30, Bob: 25, Charlie: 35, David: 28}
// ম্যাপের দৈর্ঘ্য
print(ages.length); // Output: 4
}
Collections এর সুবিধা
- ডেটা সংগঠন: Collections ডেটা সহজে সংগঠিত করতে সাহায্য করে, যেমন তালিকা, সেট এবং ম্যাপ।
- নির্ভরযোগ্যতা: সেট এবং ম্যাপ ব্যবহার করে ডেটার অনন্যতা এবং মানের দ্রুত অ্যাক্সেস নিশ্চিত করা যায়।
- বিভিন্ন অপারেশন: Collections বিভিন্ন ধরনের অপারেশন যেমন যোগ, মুছে ফেলা, অনুসন্ধান ইত্যাদি সমর্থন করে।
Dart প্রোগ্রামিং ভাষায় Collections একটি গুরুত্বপূর্ণ অংশ, যা ডেটা সংগঠিত এবং পরিচালনার জন্য ব্যবহৃত হয়। Dart এ তিনটি প্রধান ধরনের কালেকশন রয়েছে: List, Set, এবং Map। নিচে প্রতিটির বিস্তারিত আলোচনা করা হলো।
1. List (লিস্ট)
List হল একটি অর্ডারড কালেকশন যা একাধিক মান ধারণ করে। এতে একাধিক ডেটা টাইপের উপাদান থাকতে পারে এবং প্রতিটি উপাদান একটি ইনডেক্স দ্বারা অ্যাক্সেস করা হয়।
বৈশিষ্ট্য:
- অর্ডারড কালেকশন: উপাদানগুলি একটি নির্দিষ্ট অর্ডারে রাখা হয়।
- ডুপ্লিকেট উপাদান: একই মান একাধিকবার থাকতে পারে।
- ইনডেক্সিং: উপাদানগুলি ০ থেকে শুরু করে ইনডেক্স করা হয়।
উদাহরণ:
void main() {
List<String> fruits = ['Apple', 'Banana', 'Cherry'];
print(fruits[1]); // Output: Banana
fruits.add('Orange');
print(fruits.length); // Output: 4
}
2. Set (সেট)
Set হল একটি অর্ডারড কালেকশন যা ইউনিক (unique) মান ধারণ করে। সেটে কোনো ডুপ্লিকেট মান থাকে না এবং এটি সাধারণত {} ব্রেসিসের মধ্যে ব্যবহৃত হয়।
বৈশিষ্ট্য:
- অর্ডারড কালেকশন: উপাদানগুলি একটি নির্দিষ্ট অর্ডারে রাখা হয় (যদিও সেটের মৌলিক ধারণা অর্ডারড নয়)।
- অবশ্যই ইউনিক: একই মান একাধিকবার থাকতে পারে না।
- কোন ইনডেক্স নেই: সেটে উপাদানগুলি ইনডেক্স দ্বারা অ্যাক্সেস করা হয় না।
উদাহরণ:
void main() {
Set<String> fruits = {'Apple', 'Banana', 'Cherry'};
fruits.add('Banana'); // Nothing happens (no duplicates)
fruits.add('Orange');
print(fruits); // Output: {Apple, Banana, Cherry, Orange}
}
3. Map (ম্যাপ)
Map হল একটি কী-মান জোড়ের কালেকশন। প্রতিটি মান একটি কী দ্বারা অ্যাক্সেস করা হয়। এটি একটি অর্ডারড কালেকশন যেখানে প্রতিটি কী ইউনিক হতে হয়।
বৈশিষ্ট্য:
- কী-মান জোড়: প্রতিটি মান একটি নির্দিষ্ট কী দ্বারা অ্যাক্সেস করা হয়।
- ডুপ্লিকেট কী নেই: একাধিক মান একই কী দ্বারা প্রতিনিধিত্ব করা যাবে না।
- অর্ডারড কালেকশন: Dart 2.0 এর পর,
Mapএকটি ইনসারশন অর্ডার বজায় রাখে।
উদাহরণ:
void main() {
Map<String, int> ages = {
'Alice': 30,
'Bob': 25,
'Charlie': 35
};
print(ages['Bob']); // Output: 25
ages['David'] = 28;
print(ages); // Output: {Alice: 30, Bob: 25, Charlie: 35, David: 28}
}
Dart প্রোগ্রামিং ভাষায় Collections (যেমন List, Set, এবং Map) এর উপাদানগুলির মধ্যে পুনরাবৃত্তি করার জন্য বিভিন্ন প্রযুক্তি রয়েছে। এই প্রযুক্তিগুলি ব্যবহার করে আপনি একটি কালেকশনের প্রতিটি উপাদানকে সহজে অ্যাক্সেস করতে পারেন। নিচে Dart এ Collections এ Iteration করার জন্য কিছু সাধারণ টেকনিক আলোচনা করা হলো।
1. for Loop
for লুপ ব্যবহার করে আপনি একটি কালেকশনের প্রতিটি উপাদানের উপর লুপ করতে পারেন। এটি একটি সাধারণ এবং জনপ্রিয় পদ্ধতি।
উদাহরণ (List):
void main() {
List<String> fruits = ['Apple', 'Banana', 'Cherry'];
for (int i = 0; i < fruits.length; i++) {
print(fruits[i]); // Output: Apple, Banana, Cherry
}
}
উদাহরণ (Set):
void main() {
Set<String> fruits = {'Apple', 'Banana', 'Cherry'};
for (var fruit in fruits) {
print(fruit); // Output: Apple, Banana, Cherry (order may vary)
}
}
উদাহরণ (Map):
void main() {
Map<String, int> ages = {
'Alice': 30,
'Bob': 25,
'Charlie': 35
};
for (var entry in ages.entries) {
print("${entry.key}: ${entry.value}"); // Output: Alice: 30, Bob: 25, Charlie: 35
}
}
2. forEach Method
Dart এ forEach মেথড ব্যবহার করে আপনি একটি কালেকশনের প্রতিটি উপাদানের জন্য একটি ফাংশন কার্যকর করতে পারেন। এটি কোডকে আরও সংক্ষিপ্ত এবং পরিষ্কার করে।
উদাহরণ (List):
void main() {
List<String> fruits = ['Apple', 'Banana', 'Cherry'];
fruits.forEach((fruit) {
print(fruit); // Output: Apple, Banana, Cherry
});
}
উদাহরণ (Set):
void main() {
Set<String> fruits = {'Apple', 'Banana', 'Cherry'};
fruits.forEach((fruit) {
print(fruit); // Output: Apple, Banana, Cherry (order may vary)
});
}
উদাহরণ (Map):
void main() {
Map<String, int> ages = {
'Alice': 30,
'Bob': 25,
'Charlie': 35
};
ages.forEach((key, value) {
print("$key: $value"); // Output: Alice: 30, Bob: 25, Charlie: 35
});
}
3. Iterable Methods
Dart এ Collections-এর উপর বিভিন্ন Iterable মেথডও রয়েছে যা লুপিং প্রক্রিয়াকে আরও সহজ করে।
উদাহরণ (List):
void main() {
List<String> fruits = ['Apple', 'Banana', 'Cherry'];
for (var fruit in fruits.where((fruit) => fruit.startsWith('B'))) {
print(fruit); // Output: Banana
}
}
4. Map Methods
Dart এ map() মেথড ব্যবহার করে একটি Collection-এ নির্দিষ্ট অপারেশন প্রয়োগ করতে পারেন।
উদাহরণ (List):
void main() {
List<int> numbers = [1, 2, 3, 4];
var squares = numbers.map((number) => number * number);
squares.forEach((square) {
print(square); // Output: 1, 4, 9, 16
});
}
Dart প্রোগ্রামিং ভাষায় List এবং Map ডেটা স্ট্রাকচারগুলি খুবই শক্তিশালী এবং প্রয়োজনীয়। এদের ব্যবহার করে আপনি ডেটা সহজে সংরক্ষণ, অ্যাক্সেস এবং ম্যানিপুলেট করতে পারেন। নিচে Dart এ List এবং Map ম্যানিপুলেশন সম্পর্কিত কিছু গুরুত্বপূর্ণ পদ্ধতি আলোচনা করা হলো।
List এর ম্যানিপুলেশন
1. লিস্ট তৈরি করা
List<String> fruits = ['Apple', 'Banana', 'Cherry'];
2. মান যোগ করা
fruits.add('Orange'); // একক মান যোগ করা
fruits.addAll(['Mango', 'Pineapple']); // একাধিক মান যোগ করা
3. মান মুছে ফেলা
fruits.remove('Banana'); // নির্দিষ্ট মান মুছে ফেলা
fruits.removeAt(0); // ইনডেক্স দ্বারা মান মুছে ফেলা (0 হল প্রথম উপাদান)
4. মান আপডেট করা
fruits[1] = 'Blueberry'; // দ্বিতীয় উপাদান আপডেট করা
5. লিস্টের দৈর্ঘ্য পেতে
print(fruits.length); // মোট উপাদানের সংখ্যা
6. লিস্টের উপাদান অ্যাক্সেস করা
String firstFruit = fruits[0]; // প্রথম উপাদান অ্যাক্সেস
print(firstFruit); // Output: Apple
7. লিস্টের উপাদান ফিল্টার করা
var longNamedFruits = fruits.where((fruit) => fruit.length > 5).toList();
print(longNamedFruits); // Output: [Blueberry, Pineapple]
Map এর ম্যানিপুলেশন
1. ম্যাপ তৈরি করা
Map<String, int> ages = {
'Alice': 30,
'Bob': 25,
'Charlie': 35
};
2. মান যোগ করা
ages['David'] = 28; // নতুন কী-মান জোড়া যোগ করা
3. মান মুছে ফেলা
ages.remove('Bob'); // নির্দিষ্ট কী দ্বারা মান মুছে ফেলা
4. মান আপডেট করা
ages['Alice'] = 31; // নির্দিষ্ট কী এর মান আপডেট করা
5. ম্যাপের দৈর্ঘ্য পেতে
print(ages.length); // মোট কী-মান জোড়ের সংখ্যা
6. ম্যাপের মান অ্যাক্সেস করা
int aliceAge = ages['Alice']!; // Alice এর বয়স অ্যাক্সেস করা
print(aliceAge); // Output: 31
7. ম্যাপের কীগুলি এবং মানগুলি পেতে
var keys = ages.keys; // সব কীগুলি
var values = ages.values; // সব মান
print(keys); // Output: (Alice, Charlie, David)
print(values); // Output: (31, 35, 28)
8. ম্যাপের মান ফিল্টার করা
var filteredAges = ages.entries.where((entry) => entry.value > 30).toList();
print(filteredAges); // Output: (MapEntry(Alice: 31), MapEntry(Charlie: 35))
Dart প্রোগ্রামিং ভাষায় Collection If এবং Spread Operator দুটি বিশেষ বৈশিষ্ট্য যা আপনাকে ডেটা সংগ্রহ করার সময় আরও বেশি নমনীয়তা এবং কার্যকারিতা প্রদান করে। নিচে এই দুইটি অপারেটরের ব্যবহার এবং উদাহরণ সহ আলোচনা করা হলো।
1. Collection If
Collection If একটি শর্ত ভিত্তিক ভাবে ডেটা সংগ্রহ তৈরি করতে ব্যবহৃত হয়। এটি মূলত লিস্ট, সেট, বা ম্যাপের মধ্যে শর্ত অনুসারে উপাদান যুক্ত করার সময় কার্যকর।
উদাহরণ (List):
void main() {
bool includeBanana = true;
List<String> fruits = [
'Apple',
'Orange',
if (includeBanana) 'Banana', // If statement
'Cherry',
];
print(fruits); // Output: [Apple, Orange, Banana, Cherry]
}
উদাহরণ (Set):
void main() {
bool includeGrapes = false;
Set<String> fruits = {
'Apple',
'Orange',
if (includeGrapes) 'Grapes', // If statement
'Cherry',
};
print(fruits); // Output: {Apple, Orange, Cherry}
}
উদাহরণ (Map):
void main() {
bool includeAge = true;
Map<String, dynamic> person = {
'name': 'Alice',
if (includeAge) 'age': 30, // If statement
};
print(person); // Output: {name: Alice, age: 30}
}
2. Spread Operator
Spread Operator (...) ব্যবহার করে একটি কালেকশনকে অন্য একটি কালেকশনে যুক্ত করা হয়। এটি মূলত লিস্ট, সেট, বা ম্যাপে উপাদানগুলি যোগ করতে ব্যবহৃত হয়।
উদাহরণ (List):
void main() {
List<String> fruits1 = ['Apple', 'Banana'];
List<String> fruits2 = ['Cherry', 'Orange'];
List<String> allFruits = [
...fruits1, // Spread operator
...fruits2, // Spread operator
];
print(allFruits); // Output: [Apple, Banana, Cherry, Orange]
}
উদাহরণ (Set):
void main() {
Set<String> fruits1 = {'Apple', 'Banana'};
Set<String> fruits2 = {'Cherry', 'Orange'};
Set<String> allFruits = {
...fruits1, // Spread operator
...fruits2, // Spread operator
};
print(allFruits); // Output: {Apple, Banana, Cherry, Orange}
}
উদাহরণ (Map):
void main() {
Map<String, int> ages1 = {'Alice': 30, 'Bob': 25};
Map<String, int> ages2 = {'Charlie': 35, 'David': 28};
Map<String, int> allAges = {
...ages1, // Spread operator
...ages2, // Spread operator
};
print(allAges); // Output: {Alice: 30, Bob: 25, Charlie: 35, David: 28}
}
Read more