Vectors এর ধারণা এবং তৈরি করা

Vectors এবং Sequences (ভেক্টরস এবং সিকোয়েন্সেস) - স্কালা কালেকশন (Scala Collections) - Computer Programming

303

স্কালায় Vector হলো একটি ইমিউটেবল সিকোয়েন্স (Immutable Sequence) ডেটা স্ট্রাকচার যা ইন্ডেক্সড (Indexed) অ্যারে বা তালিকা হিসেবে কাজ করে, তবে এটি আরো কার্যকরী এবং সুরক্ষিত। ভেক্টর স্কালার কালেকশনের একটি গুরুত্বপূর্ণ অংশ এবং এটি বিশেষভাবে পারফরম্যান্সের দিক থেকে উন্নত কারণ এটি ইনডেক্সড অ্যাক্সেস এবং উপাদান যোগ বা পরিবর্তনের ক্ষেত্রে দ্রুত। ভেক্টর মূলত দ্রুত র্যান্ডম অ্যাক্সেস প্রদান করে এবং বড় ডেটা সাইজের ক্ষেত্রে ভালো পারফরম্যান্স দেয়।


ভেক্টরের মৌলিক বৈশিষ্ট্য

১. ইমিউটেবল (Immutable): স্কালার ভেক্টর একটি ইমিউটেবল কালেকশন, যার মানে হল যে একবার এটি তৈরি হলে আপনি এর উপাদান পরিবর্তন করতে পারবেন না। পরিবর্তে, যদি আপনাকে কিছু পরিবর্তন করতে হয়, তবে একটি নতুন ভেক্টর তৈরি করা হবে।

২. ইন্ডেক্সড অ্যাক্সেস: ভেক্টরটি একটি ইনডেক্সড সিকোয়েন্স, যেখানে প্রতিটি উপাদান একটি নির্দিষ্ট ইনডেক্স দিয়ে অ্যাক্সেস করা যায় (ইনডেক্স 0 থেকে শুরু হয়)।

৩. ফাস্ট র্যান্ডম অ্যাক্সেস: ভেক্টর খুব দ্রুত র্যান্ডম অ্যাক্সেস দেয়, অর্থাৎ আপনি যেকোনো ইনডেক্সের উপাদান দ্রুত এক্সেস করতে পারবেন।

৪. ডাইনামিক: ভেক্টরটি একটি ডাইনামিক ডেটা স্ট্রাকচার, অর্থাৎ আপনি এর আকার পরিবর্তন করতে পারবেন (যেমন নতুন উপাদান যোগ করা), তবে এটি ইমিউটেবল হওয়ায় পূর্বের ভেক্টরের পরিবর্তে একটি নতুন ভেক্টর তৈরি হয়।


স্কালায় ভেক্টর তৈরি করা

স্কালায় ভেক্টর তৈরি করার জন্য আপনি Vector ক্লাস ব্যবহার করতে পারেন। এটি সহজে তৈরি করা যায় এবং ইমিউটেবল হিসেবে কাজ করে।

১. ভেক্টর তৈরি করা

val numbers = Vector(1, 2, 3, 4, 5)  // একটি ভেক্টর তৈরি করা

এখানে, Vector(1, 2, 3, 4, 5) একটি নতুন ভেক্টর তৈরি করেছে, যার উপাদানগুলো হলো ১, ২, ৩, ৪, ৫।

২. ফাঁকা ভেক্টর তৈরি করা

val emptyVector = Vector.empty[Int]  // ফাঁকা ভেক্টর তৈরি করা

এখানে, Vector.empty[Int] একটি ফাঁকা ভেক্টর তৈরি করেছে, যার কোনো উপাদান নেই।

৩. ভেক্টর থেকে উপাদান অ্যাক্সেস করা

val numbers = Vector(1, 2, 3, 4, 5)
println(numbers(0))  // আউটপুট: 1
println(numbers(3))  // আউটপুট: 4

এখানে, numbers(0) প্রথম উপাদান (১) এবং numbers(3) চতুর্থ উপাদান (৪) অ্যাক্সেস করছে।


স্কালায় ভেক্টরের উপর কিছু মৌলিক অপারেশন

১. নতুন উপাদান যোগ করা

যেহেতু ভেক্টর ইমিউটেবল, আপনি তার উপাদান পরিবর্তন করতে পারবেন না। তবে আপনি নতুন উপাদান যোগ করতে পারেন, যেটি একটি নতুন ভেক্টর তৈরি করবে।

val numbers = Vector(1, 2, 3, 4)
val updatedNumbers = numbers :+ 5  // নতুন উপাদান ৫ যোগ করা
println(updatedNumbers.mkString(", "))  // আউটপুট: 1, 2, 3, 4, 5

এখানে, numbers :+ 5 নতুন উপাদান 5 যোগ করেছে এবং একটি নতুন ভেক্টর তৈরি হয়েছে।

২. এলিমেন্ট ফিল্টারিং (Filtering Elements)

val numbers = Vector(1, 2, 3, 4, 5)
val evenNumbers = numbers.filter(_ % 2 == 0)  // যেগুলি ২ দিয়ে ভাগ হয়
println(evenNumbers.mkString(", "))  // আউটপুট: 2, 4

এখানে, filter ফাংশনটি ভেক্টরের মধ্যে থেকে শুধুমাত্র এমন উপাদানগুলো বেছে নিয়েছে যা ২ দিয়ে ভাগ যায়।

৩. অ্যারে থেকে মানের পরিবর্তন (Mapping)

val numbers = Vector(1, 2, 3, 4)
val doubled = numbers.map(_ * 2)  // প্রতিটি উপাদানকে দ্বিগুণ করা
println(doubled.mkString(", "))  // আউটপুট: 2, 4, 6, 8

এখানে, map ফাংশনটি ভেক্টরের প্রতিটি উপাদানে গুণফল 2 করেছে।

৪. ভেক্টরের লম্বাই (Length)

val numbers = Vector(1, 2, 3, 4, 5)
println(numbers.length)  // আউটপুট: 5

এখানে, length ফাংশনটি ভেক্টরের মোট উপাদানের সংখ্যা (৫) প্রদান করেছে।

৫. ভেক্টর একত্রিত (Concatenation)

val numbers1 = Vector(1, 2, 3)
val numbers2 = Vector(4, 5, 6)
val combined = numbers1 ++ numbers2
println(combined.mkString(", "))  // আউটপুট: 1, 2, 3, 4, 5, 6

এখানে, ++ অপারেটরটি দুটি ভেক্টরকে একত্রিত করে নতুন ভেক্টর তৈরি করেছে।


সারাংশ

ভেক্টর হল একটি ইমিউটেবল এবং ইনডেক্সড সিকোয়েন্স ডেটা স্ট্রাকচার, যা দ্রুত র্যান্ডম অ্যাক্সেস প্রদান করে এবং বড় ডেটা সাইজের ক্ষেত্রে ভালো পারফরম্যান্স দেয়। এটি স্কালার কালেকশনের একটি শক্তিশালী অংশ এবং অনেক ফাংশনাল অপারেশন যেমন map, filter, ++ ইত্যাদি সমর্থন করে, যা ডেটা প্রক্রিয়াকরণকে আরও সহজ এবং কার্যকর করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...