Collections এবং Arrays
কটলিনে Collections এবং Arrays হলো ডেটা স্ট্রাকচার যা একাধিক ভ্যালু ধারণ করতে ব্যবহৃত হয়। এগুলো প্রোগ্রামে ডেটা ম্যানিপুলেশন, ইটারেশন, এবং ম্যানেজমেন্ট সহজ করে। Collections সাধারণত List, Set, এবং Map নিয়ে গঠিত, যেখানে Arrays একটি নির্দিষ্ট আকারের এবং ফিক্সড টাইপের ডেটা ধারণ করে। নিচে Collections এবং Arrays নিয়ে বিস্তারিত আলোচনা করা হলো:
১. Arrays
Arrays হলো এক ধরনের ডেটা স্ট্রাকচার যা নির্দিষ্ট আকারের এবং নির্দিষ্ট টাইপের এলিমেন্ট ধারণ করে। কটলিনে Arrays হলো Array ক্লাসের ইন্সট্যান্স, এবং এগুলো মিউটেবল অর্থাৎ, আপনি Arrays এর মান পরিবর্তন করতে পারেন।
i) Array ডিক্লারেশন
উদাহরণ:
val numbers = arrayOf(1, 2, 3, 4, 5)
ব্যাখ্যা:
arrayOfফাংশন ব্যবহার করে একটি Array তৈরি করা হয়েছে যা ইন্টিজার মান ধারণ করছে।
ii) Array এর আইটেম অ্যাক্সেস করা
উদাহরণ:
println(numbers[0]) // আউটপুট: 1
ব্যাখ্যা:
numbers[0]দ্বারা আমরা Array এর প্রথম আইটেম অ্যাক্সেস করছি।
iii) Array এর মান পরিবর্তন করা
উদাহরণ:
numbers[1] = 10
println(numbers[1]) // আউটপুট: 10
ব্যাখ্যা:
numbers[1]এ নতুন মান অ্যাসাইন করা হয়েছে।
iv) নির্দিষ্ট টাইপের Array
val doubleArray = doubleArrayOf(1.1, 2.2, 3.3)
val charArray = charArrayOf('a', 'b', 'c')
ব্যাখ্যা:
doubleArrayOfএবংcharArrayOfনির্দিষ্ট টাইপের Array তৈরি করে।
২. Collections
কটলিনে Collections হলো ডেটার গোষ্ঠী যেগুলো লিস্ট, সেট, এবং ম্যাপ হিসেবে ব্যবহৃত হয়। এগুলোকে ইম্যুটেবল (পরিবর্তন করা যায় না) এবং মিউটেবল (পরিবর্তন করা যায়) হিসেবে ভাগ করা হয়।
i) List
List হলো একটি Collections যেটি ডুপ্লিকেট মান এবং অর্ডার মেনে চলে।
- ইম্যুটেবল List: পরিবর্তন করা যায় না।
- মিউটেবল List: পরিবর্তন করা যায়।
উদাহরণ (ইম্যুটেবল List):
val fruits = listOf("Apple", "Banana", "Cherry")
println(fruits[0]) // আউটপুট: Apple
উদাহরণ (মিউটেবল List):
val mutableFruits = mutableListOf("Apple", "Banana")
mutableFruits.add("Cherry")
println(mutableFruits) // আউটপুট: [Apple, Banana, Cherry]
ব্যাখ্যা:
listOfদিয়ে একটি ইম্যুটেবল লিস্ট তৈরি করা হয়েছে, যা পরিবর্তন করা যায় না।mutableListOfদিয়ে একটি মিউটেবল লিস্ট তৈরি করা হয়েছে, যেখানে নতুন আইটেম অ্যাড করা যায়।
ii) Set
Set হলো এমন একটি Collection যা ইউনিক মান ধারণ করে এবং কোন আইটেমের ডুপ্লিকেট থাকে না।
- ইম্যুটেবল Set: পরিবর্তন করা যায় না।
- মিউটেবল Set: পরিবর্তন করা যায়।
উদাহরণ (ইম্যুটেবল Set):
val numbersSet = setOf(1, 2, 3, 2)
println(numbersSet) // আউটপুট: [1, 2, 3]
উদাহরণ (মিউটেবল Set):
val mutableNumbersSet = mutableSetOf(1, 2, 3)
mutableNumbersSet.add(4)
println(mutableNumbersSet) // আউটপুট: [1, 2, 3, 4]
ব্যাখ্যা:
setOfদিয়ে একটি ইম্যুটেবল সেট তৈরি করা হয়েছে।mutableSetOfদিয়ে একটি মিউটেবল সেট তৈরি করা হয়েছে, যেখানে নতুন মান অ্যাড করা যায়।
iii) Map
Map হলো এমন একটি Collection যা কী-ভ্যালু পেয়ার ধারণ করে।
- ইম্যুটেবল Map: পরিবর্তন করা যায় না।
- মিউটেবল Map: পরিবর্তন করা যায়।
উদাহরণ (ইম্যুটেবল Map):
val countryCodes = mapOf("USA" to 1, "India" to 91, "Bangladesh" to 880)
println(countryCodes["India"]) // আউটপুট: 91
উদাহরণ (মিউটেবল Map):
val mutableCountryCodes = mutableMapOf("USA" to 1, "India" to 91)
mutableCountryCodes["Bangladesh"] = 880
println(mutableCountryCodes) // আউটপুট: {USA=1, India=91, Bangladesh=880}
ব্যাখ্যা:
mapOfদিয়ে একটি ইম্যুটেবল ম্যাপ তৈরি করা হয়েছে।mutableMapOfদিয়ে একটি মিউটেবল ম্যাপ তৈরি করা হয়েছে, যেখানে নতুন কী-ভ্যালু পেয়ার অ্যাড করা যায়।
৩. Collections এর উপর ইটারেশন
কটলিনে Collections (List, Set, Map) এর উপর ইটারেশন করা খুবই সহজ।
উদাহরণ:
val fruits = listOf("Apple", "Banana", "Cherry")
for (fruit in fruits) {
println(fruit)
}
উদাহরণ (Map):
val countryCodes = mapOf("USA" to 1, "India" to 91)
for ((country, code) in countryCodes) {
println("$country has code $code")
}
ব্যাখ্যা:
- লিস্ট এবং ম্যাপের উপরে
forলুপ ব্যবহার করে ইটারেশন করা হয়েছে।
উপসংহার
কটলিনে Collections এবং Arrays ডেটা ম্যানেজমেন্ট এবং প্রোগ্রামিংকে আরও কার্যকরী এবং সহজ করে তোলে। Arrays ফিক্সড সাইজের এবং নির্দিষ্ট টাইপের ডেটা ধারণ করে, যেখানে Collections (List, Set, Map) ডাইনামিক এবং মিউটেবল বা ইম্যুটেবল হতে পারে। Collections এবং Arrays ব্যবহার করে আপনি সহজেই ডেটার উপর ইটারেশন, ম্যানিপুলেশন এবং অ্যাক্সেস করতে পারেন।
Arrays এবং তাদের ব্যবহার
কটলিনে Arrays হলো ডেটার একটি সংগ্রহ, যা একসাথে একাধিক উপাদান ধারণ করতে পারে। প্রতিটি উপাদান একটি নির্দিষ্ট ইনডেক্সের মাধ্যমে অ্যাক্সেস করা যায়। কটলিনে Array ব্যবহার করা বেশ সহজ এবং এটি বিভিন্ন অপারেশন সমর্থন করে, যেমন অ্যাক্সেস করা, আপডেট করা, এবং লুপিং করা। নিচে Arrays সম্পর্কে বিস্তারিত আলোচনা করা হলো।
১. Array ডিক্লারেশন এবং ইনিশিয়ালাইজেশন
কটলিনে arrayOf() ফাংশন ব্যবহার করে একটি অ্যারে তৈরি করা যায়। অ্যারেগুলো বিভিন্ন ধরনের ডেটা (যেমন: Int, String, Double) ধারণ করতে পারে।
সাধারণ Array উদাহরণ:
val numbers = arrayOf(1, 2, 3, 4, 5)
val fruits = arrayOf("Apple", "Banana", "Cherry")
- এখানে
numbersএকটি ইন্টিজার অ্যারে এবংfruitsএকটি স্ট্রিং অ্যারে। - কটলিনে অ্যারের ইনডেক্সিং ০ থেকে শুরু হয়।
২. Array অ্যাক্সেস এবং আপডেট
অ্যারের উপাদানগুলো ইনডেক্স ব্যবহার করে অ্যাক্সেস করা যায়। ইনডেক্স দিয়ে অ্যারের মান অ্যাসাইন করাও যায়।
অ্যারে থেকে মান অ্যাক্সেস:
val fruits = arrayOf("Apple", "Banana", "Cherry")
println(fruits[0]) // আউটপুট: Apple
println(fruits[2]) // আউটপুট: Cherry
[0]এবং[2]ইনডেক্স ব্যবহার করে অ্যারের উপাদানগুলো এক্সেস করা হয়েছে।
অ্যারের মান আপডেট:
val numbers = arrayOf(1, 2, 3, 4, 5)
numbers[1] = 10
println(numbers[1]) // আউটপুট: 10
[1]ইনডেক্সে ১০ অ্যাসাইন করা হয়েছে, তাই দ্বিতীয় উপাদানটি আপডেট হয়ে গেছে।
৩. Array-এর সাথে লুপ ব্যবহার
অ্যারের উপাদানগুলো লুপের মাধ্যমে সহজেই এক্সেস এবং প্রিন্ট করা যায়।
for লুপ ব্যবহার করে:
val fruits = arrayOf("Apple", "Banana", "Cherry")
for (fruit in fruits) {
println(fruit)
}
- এখানে
forলুপ ব্যবহার করে প্রতিটিfruitপ্রিন্ট করা হয়েছে।
ইনডেক্সের মাধ্যমে লুপ:
kotlin
Copy code
val numbers = arrayOf(1, 2, 3, 4, 5)
for (i in numbers.indices) {
println("Element at index $i is ${numbers[i]}")
}
numbers.indicesব্যবহার করে প্রতিটি ইনডেক্সের জন্য মান প্রিন্ট করা হয়েছে।
৪. Array এর আকার (Size)
কটলিনে size প্রপার্টি ব্যবহার করে অ্যারের আকার জানা যায়।
val numbers = arrayOf(1, 2, 3, 4, 5)
println("Size of the array: ${numbers.size}") // আউটপুট: Size of the array: 5
numbers.sizeঅ্যারের উপাদান সংখ্যা প্রদান করবে।
৫. নির্দিষ্ট ডেটা টাইপের Array
কটলিনে নির্দিষ্ট ডেটা টাইপের অ্যারে তৈরি করা যায়, যেমন IntArray, DoubleArray, CharArray ইত্যাদি। এই অ্যারেগুলো নির্দিষ্ট ডেটা টাইপের জন্য আরও অপ্টিমাইজড এবং কার্যকর।
IntArray উদাহরণ:
val intArray = intArrayOf(1, 2, 3, 4, 5)
println(intArray[2]) // আউটপুট: 3
DoubleArray উদাহরণ:
val doubleArray = doubleArrayOf(1.5, 2.5, 3.5)
println(doubleArray[1]) // আউটপুট: 2.5
৬. Multidimensional Arrays
কটলিনে মাল্টিডাইমেনশনাল অ্যারেও তৈরি করা যায়, যা মূলত একটি অ্যারের মধ্যে আরও অ্যারে ধারণ করে।
2D Array উদাহরণ:
val matrix = arrayOf(
intArrayOf(1, 2, 3),
intArrayOf(4, 5, 6),
intArrayOf(7, 8, 9)
)
println(matrix[0][1]) // আউটপুট: 2
println(matrix[2][2]) // আউটপুট: 9
- এখানে
matrixএকটি ২-ডাইমেনশনাল অ্যারে যা তিনটিIntArrayধারণ করে। [0][1]এবং[2][2]দিয়ে ২-ডাইমেনশনাল অ্যারে এক্সেস করা হয়েছে।
৭. Array ফাংশন এবং অপারেশন
কটলিনে অ্যারের জন্য কিছু বিল্ট-ইন ফাংশন এবং অপারেশন রয়েছে, যেমন:
i) first() এবং last()
val numbers = arrayOf(10, 20, 30, 40)
println(numbers.first()) // আউটপুট: 10
println(numbers.last()) // আউটপুট: 40
ii) indexOf()
val fruits = arrayOf("Apple", "Banana", "Cherry")
println(fruits.indexOf("Banana")) // আউটপুট: 1
indexOf()ব্যবহার করে নির্দিষ্ট উপাদানের ইনডেক্স পাওয়া যায়। যদি উপাদানটি না থাকে, তবে-1রিটার্ন করবে।
iii) sortedArray()
val unsortedNumbers = arrayOf(5, 2, 8, 1, 3)
val sortedNumbers = unsortedNumbers.sortedArray()
println(sortedNumbers.joinToString()) // আউটপুট: 1, 2, 3, 5, 8
sortedArray()ব্যবহার করে অ্যারে সর্ট করা যায়।
উপসংহার
কটলিনে Arrays ব্যবহারের মাধ্যমে ডেটার একটি সংগ্রহকে সহজে পরিচালনা করা যায়। কটলিনে অ্যারে ডিক্লারেশন, ইনডেক্স ব্যবহার, লুপ, এবং বিল্ট-ইন ফাংশন সমর্থন করে, যা অ্যারের সাথে কাজ করা সহজ এবং কার্যকর করে তোলে। নির্দিষ্ট ডেটা টাইপের অ্যারে ব্যবহার করে পারফরম্যান্স বৃদ্ধি এবং মাল্টিডাইমেনশনাল অ্যারে ব্যবহার করে জটিল ডেটা মডেল তৈরি করা যায়।
Lists (Mutable এবং Immutable)
কটলিনে Lists হলো একটি ডেটা স্ট্রাকচার যা এক বা একাধিক আইটেম ধারণ করতে পারে। কটলিনে দুটি ধরনের লিস্ট রয়েছে: Immutable Lists (যার মান পরিবর্তন করা যায় না) এবং Mutable Lists (যার মান পরিবর্তন করা যায়)। নিচে এই দুই ধরনের লিস্ট নিয়ে বিস্তারিত আলোচনা করা হলো:
১. Immutable List
Immutable List হলো একটি লিস্ট যার মান একবার সেট করার পর পরিবর্তন করা যায় না। কটলিনে listOf() ফাংশন ব্যবহার করে Immutable List তৈরি করা হয়। Immutable লিস্ট সাধারণত এমন ডেটা রাখার জন্য ব্যবহৃত হয় যা পরিবর্তনশীল নয়।
উদাহরণ:
val fruits = listOf("Apple", "Banana", "Cherry")
println(fruits) // আউটপুট: [Apple, Banana, Cherry]
ব্যাখ্যা:
- এখানে
fruitsএকটি Immutable List, যেখানেlistOf()ফাংশন ব্যবহার করে লিস্ট তৈরি করা হয়েছে। - এই লিস্টের কোনো আইটেম পরিবর্তন বা নতুন আইটেম যোগ/বিয়োগ করা যাবে না।
লিস্টের আইটেম অ্যাক্সেস করা:
val firstFruit = fruits[0]
println(firstFruit) // আউটপুট: Apple
লুপের মাধ্যমে লিস্টের আইটেম ইটারেট করা:
for (fruit in fruits) {
println(fruit)
}
Immutable List-এর কিছু সাধারণ অপারেশন:
contains: লিস্টে নির্দিষ্ট আইটেম আছে কিনা তা চেক করে।
println(fruits.contains("Banana")) // আউটপুট: trueindexOf: নির্দিষ্ট আইটেমের ইনডেক্স রিটার্ন করে।
println(fruits.indexOf("Cherry")) // আউটপুট: 2isEmptyএবংisNotEmpty: লিস্ট ফাঁকা কিনা তা চেক করে।
println(fruits.isEmpty()) // আউটপুট: false
println(fruits.isNotEmpty()) // আউটপুট: true২. Mutable List
Mutable List হলো এমন একটি লিস্ট যার আইটেম পরিবর্তন করা যায়। কটলিনে mutableListOf() ফাংশন ব্যবহার করে Mutable List তৈরি করা হয়। এটি সাধারণত এমন পরিস্থিতিতে ব্যবহৃত হয় যেখানে লিস্টের মান পরিবর্তন করা বা আপডেট করা প্রয়োজন।
উদাহরণ:
val numbers = mutableListOf(1, 2, 3)
println(numbers) // আউটপুট: [1, 2, 3]
লিস্টে আইটেম যোগ করা:
numbers.add(4)
println(numbers) // আউটপুট: [1, 2, 3, 4]
লিস্টে আইটেম রিমুভ করা:
numbers.remove(2)
println(numbers) // আউটপুট: [1, 3, 4]
নির্দিষ্ট ইনডেক্সে আইটেম আপডেট করা:
numbers[0] = 10
println(numbers) // আউটপুট: [10, 3, 4]
Mutable List-এর কিছু সাধারণ অপারেশন:
add: লিস্টে নতুন আইটেম যোগ করতে ব্যবহার করা হয়।
numbers.add(5)
println(numbers) // আউটপুট: [10, 3, 4, 5]
remove: নির্দিষ্ট আইটেম রিমুভ করতে ব্যবহার করা হয়।
numbers.remove(3)
println(numbers) // আউটপুট: [10, 4, 5]
clear: লিস্টের সব আইটেম রিমুভ করতে ব্যবহার করা হয়।
numbers.clear()
println(numbers) // আউটপুট: []addAll: একটি লিস্টে একাধিক আইটেম একসাথে যোগ করা যায়।
numbers.addAll(listOf(6, 7, 8))
println(numbers) // আউটপুট: [6, 7, 8]Immutable এবং Mutable List এর মধ্যে পার্থক্য
| Immutable List | Mutable List |
|---|---|
| একবার তৈরি হলে পরিবর্তন করা যায় না। | নতুন আইটেম যোগ/রিমুভ বা আপডেট করা যায়। |
listOf() ফাংশন দিয়ে তৈরি করা হয়। | mutableListOf() ফাংশন দিয়ে তৈরি করা হয়। |
| সাধারণত স্থির ডেটা স্টোর করার জন্য ব্যবহৃত হয়। | পরিবর্তনশীল ডেটা স্টোর করার জন্য ব্যবহৃত হয়। |
উপসংহার
কটলিনে Immutable এবং Mutable লিস্ট ব্যবহার করে বিভিন্ন ধরনের ডেটা ম্যানেজ করা যায়। Immutable লিস্ট ব্যবহার করলে ডেটা অপরিবর্তনীয় থাকে, যা নিরাপত্তা এবং পারফরম্যান্সের জন্য ভালো হতে পারে। অন্যদিকে, Mutable লিস্ট ব্যবহার করলে লিস্টের মান সহজেই পরিবর্তন বা আপডেট করা যায়।
Sets এবং Maps
কটলিনে Sets এবং Maps হলো দুটি গুরুত্বপূর্ণ ডেটা স্ট্রাকচার যা ডেটা সংগঠিত ও পরিচালনা করতে ব্যবহৃত হয়। Sets ইউনিক মান ধারণ করে, যেখানে Maps কী-ভ্যালু পেয়ার ধারণ করে। নিচে Sets এবং Maps নিয়ে বিস্তারিত আলোচনা করা হলো:
১. Sets
Sets হলো একটি ডেটা স্ট্রাকচার যা ইউনিক মান ধারণ করে এবং কোনো আইটেমের ডুপ্লিকেট থাকে না। কটলিনে, Sets সাধারণত দুইভাবে ব্যবহার করা হয়: Immutable Set এবং Mutable Set।
i) Immutable Set
Immutable Set হলো একটি সেট, যা তৈরি করার পর পরিবর্তন করা যায় না।
উদাহরণ:
val fruits = setOf("Apple", "Banana", "Cherry", "Apple")
println(fruits) // আউটপুট: [Apple, Banana, Cherry]
ব্যাখ্যা:
setOfফাংশন ব্যবহার করে একটি Immutable Set তৈরি করা হয়েছে।- এখানে
"Apple"একবারই অন্তর্ভুক্ত হয়েছে, দ্বিতীয়বার অন্তর্ভুক্ত হয়নি।
ii) Mutable Set
Mutable Set হলো একটি সেট, যা তৈরি করার পর আইটেম যোগ বা অপসারণ করা যায়।
উদাহরণ:
val mutableFruits = mutableSetOf("Apple", "Banana")
mutableFruits.add("Cherry")
mutableFruits.add("Apple") // ডুপ্লিকেট থাকবে না
println(mutableFruits) // আউটপুট: [Apple, Banana, Cherry]
mutableFruits.remove("Banana")
println(mutableFruits) // আউটপুট: [Apple, Cherry]
ব্যাখ্যা:
mutableSetOfফাংশন ব্যবহার করে একটি Mutable Set তৈরি করা হয়েছে।addএবংremoveমেথড ব্যবহার করে আইটেম যোগ ও অপসারণ করা হয়েছে।
iii) Sets এর উপর ইটারেশন
Sets এর উপর ইটারেশন করা খুব সহজ:
for (fruit in mutableFruits) {
println(fruit)
}
২. Maps
Maps হলো একটি ডেটা স্ট্রাকচার যা কী-ভ্যালু পেয়ার ধারণ করে। কটলিনে, Maps সাধারণত দুইভাবে ব্যবহার করা হয়: Immutable Map এবং Mutable Map।
i) Immutable Map
Immutable Map হলো একটি ম্যাপ, যা তৈরি করার পর পরিবর্তন করা যায় না।
উদাহরণ:
val countryCodes = mapOf("USA" to 1, "India" to 91, "Bangladesh" to 880)
println(countryCodes) // আউটপুট: {USA=1, India=91, Bangladesh=880}
ব্যাখ্যা:
mapOfফাংশন ব্যবহার করে একটি Immutable Map তৈরি করা হয়েছে।
ii) Mutable Map
Mutable Map হলো একটি ম্যাপ, যা তৈরি করার পর কী-ভ্যালু পেয়ার যোগ বা অপসারণ করা যায়।
উদাহরণ:
val mutableCountryCodes = mutableMapOf("USA" to 1, "India" to 91)
mutableCountryCodes["Bangladesh"] = 880 // নতুন কী-ভ্যালু পেয়ার যোগ করা
println(mutableCountryCodes) // আউটপুট: {USA=1, India=91, Bangladesh=880}
mutableCountryCodes.remove("India") // কী-ভ্যালু পেয়ার অপসারণ
println(mutableCountryCodes) // আউটপুট: {USA=1, Bangladesh=880}
ব্যাখ্যা:
mutableMapOfফাংশন ব্যবহার করে একটি Mutable Map তৈরি করা হয়েছে।- নতুন কী-ভ্যালু পেয়ার যোগ এবং বিদ্যমান পেয়ার অপসারণ করা হয়েছে।
iii) Maps এর উপর ইটারেশন
Maps এর উপর ইটারেশন করা যেতে পারে কী-ভ্যালু পেয়ার হিসেবে:
for ((country, code) in mutableCountryCodes) {
println("$country has code $code")
}
ব্যাখ্যা:
- এখানে
forলুপ ব্যবহার করে ম্যাপের প্রতিটি কী-ভ্যালু পেয়ারকে অ্যাক্সেস করা হয়েছে।
উপসংহার
কটলিনে Sets এবং Maps ডেটা ম্যানিপুলেশন এবং সংগঠনের জন্য গুরুত্বপূর্ণ ডেটা স্ট্রাকচার। Sets ইউনিক মান ধারণ করে এবং কোনো ডুপ্লিকেট থাকে না, যেখানে Maps কী-ভ্যালু পেয়ার ধারণ করে। Sets এবং Maps ব্যবহার করে ডেটার উপর কার্যকরভাবে ইটারেশন, যোগ, অপসারণ এবং অ্যাক্সেস করা যায়।
Collections এর জন্য Built-in Functions (filter, map, reduce)
কটলিনে Collections পরিচালনার জন্য অনেক বিল্ট-ইন ফাংশন রয়েছে, যার মধ্যে filter, map, এবং reduce বেশ জনপ্রিয়। এই ফাংশনগুলো লিস্ট, সেট, এবং ম্যাপের মতো কালেকশনে ডেটা ম্যানিপুলেট করতে ব্যবহৃত হয়। নিচে এই ফাংশনগুলোর ব্যবহার ও উদাহরণ নিয়ে বিস্তারিত আলোচনা করা হলো।
১. filter
filter ফাংশন একটি কালেকশনের প্রতিটি উপাদানকে একটি শর্তের উপর ভিত্তি করে ফিল্টার করে এবং শর্ত পূরণ করা উপাদানগুলোর নতুন একটি কালেকশন রিটার্ন করে।
উদাহরণ:
fun main() {
val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
val evenNumbers = numbers.filter { it % 2 == 0 }
println(evenNumbers) // আউটপুট: [2, 4, 6, 8, 10]
}
ব্যাখ্যা:
- এখানে
filterফাংশনটিnumbersলিস্টের প্রতিটি সংখ্যাকে চেক করে, এবং শুধুমাত্র যেসব সংখ্যা ২ দ্বারা বিভাজ্য সেগুলোকে একটি নতুন লিস্টে রেখে দেয়।
২. map
map ফাংশন একটি কালেকশনের প্রতিটি উপাদানের উপর একটি অপারেশন প্রয়োগ করে এবং একটি নতুন কালেকশন রিটার্ন করে। এটি মূল কালেকশনের আকৃতি পরিবর্তন না করে নতুন একটি কালেকশন তৈরি করে।
উদাহরণ:
fun main() {
val numbers = listOf(1, 2, 3, 4, 5)
val squaredNumbers = numbers.map { it * it }
println(squaredNumbers) // আউটপুট: [1, 4, 9, 16, 25]
}
ব্যাখ্যা:
- এখানে
mapফাংশনটিnumbersলিস্টের প্রতিটি সংখ্যার স্কোয়ার নিয়ে একটি নতুন লিস্ট তৈরি করেছে।
৩. reduce
reduce ফাংশন একটি কালেকশনের উপাদানগুলোকে একটি একক মানে রিডিউস করে। এটি একটি একক ফাংশন হিসেবে একটি চলমান মানকে গণনা করতে ব্যবহৃত হয়। প্রথম দুটি উপাদানকে একত্রিত করে শুরু হয় এবং ফলস্বরূপ মানটি পরবর্তী উপাদানের সাথে যুক্ত হয়।
উদাহরণ:
fun main() {
val numbers = listOf(1, 2, 3, 4, 5)
val sum = numbers.reduce { acc, number -> acc + number }
println(sum) // আউটপুট: 15
}
ব্যাখ্যা:
- এখানে
reduceফাংশনটিnumbersলিস্টের সব সংখ্যাকে একত্রিত করে, ফলে মোট ১৫ প্রাপ্ত হয়েছে।accহলো আগের ফলাফল এবংnumberহলো বর্তমান উপাদান।
৪. Composing Functions
কটলিনে আপনি filter, map, এবং reduce ফাংশনগুলোকে একসাথে ব্যবহার করে আরও জটিল অপারেশন করতে পারেন।
উদাহরণ:
fun main() {
val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
val sumOfEvenSquares = numbers
.filter { it % 2 == 0 } // প্রথমে ফিল্টার করুন
.map { it * it } // পরে স্কোয়ার করুন
.reduce { acc, number -> acc + number } // অবশেষে সব যোগ করুন
println(sumOfEvenSquares) // আউটপুট: 220
}
ব্যাখ্যা:
- এখানে প্রথমে
filterব্যবহার করে মাত্র ইভেন সংখ্যা বের করা হয়েছে, তারপরmapব্যবহার করে সেগুলোর স্কোয়ার করা হয়েছে, এবং অবশেষেreduceব্যবহার করে স্কোয়ার করা সংখ্যাগুলো যোগ করা হয়েছে।
উপসংহার
কটলিনে Collections-এর জন্য filter, map, এবং reduce ফাংশনগুলো অত্যন্ত কার্যকর এবং শক্তিশালী। এগুলো ব্যবহার করে আপনি কোডকে সংক্ষিপ্ত, পরিষ্কার এবং রিডেবল করতে পারেন। এই ফাংশনগুলোর মাধ্যমে ডেটা ম্যানিপুলেশন দ্রুত এবং কার্যকরভাবে করা যায়।
Read more