Vectors এর সাথে Data Manipulation Techniques

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

351

স্কালায় Vector একটি অত্যন্ত কার্যকরী, ইমিউটেবল (immutable) এবং ইনডেক্সড (indexed) সিকোয়েন্স, যা ফাংশনাল প্রোগ্রামিং এবং অ্যাপ্লিকেশনগুলিতে ব্যাপকভাবে ব্যবহৃত হয়। এটি উচ্চ পারফরম্যান্স প্রদান করে, বিশেষত যখন ডেটার উপাদানগুলো ইনডেক্সের মাধ্যমে অ্যাক্সেস করতে হয়। ভেক্টরের সুবিধা হলো এটি দ্রুত অ্যাক্সেস ও পরিবর্তন করতে সক্ষম, এবং সিকোয়েন্সের গঠন ইমিউটেবল হলেও ডেটা ম্যানিপুলেশন অপারেশনগুলো খুবই কার্যকর।


ভেক্টরের সাথে ডেটা ম্যানিপুলেশন কৌশল

১. ভেক্টর তৈরি করা (Creating a Vector)

ভেক্টর তৈরি করার জন্য সাধারণত Vector ক্লাস ব্যবহার করা হয়।

val vec = Vector(1, 2, 3, 4, 5)
println(vec)  // Output: Vector(1, 2, 3, 4, 5)

২. map ব্যবহার করে ডেটা পরিবর্তন (Using map to Transform Data)

map ফাংশনটি ভেক্টরের প্রতিটি উপাদানকে একটি নির্দিষ্ট ফাংশনের মাধ্যমে ট্রান্সফর্ম (পরিবর্তন) করার জন্য ব্যবহৃত হয়। এটি নতুন ভেক্টর রিটার্ন করে যেখানে প্রতিটি উপাদান ট্রান্সফর্ম হয়।

val vec = Vector(1, 2, 3, 4, 5)
val doubledVec = vec.map(x => x * 2)
println(doubledVec)  // Output: Vector(2, 4, 6, 8, 10)

৩. filter ব্যবহার করে উপাদান ফিল্টার করা (Filtering Elements with filter)

filter ফাংশনটি শর্তের ভিত্তিতে উপাদানগুলোকে ফিল্টার করতে ব্যবহৃত হয়। এটি নতুন ভেক্টর তৈরি করে, যেখানে শুধুমাত্র সেই উপাদানগুলি থাকে যা শর্ত পূর্ণ করে।

val vec = Vector(1, 2, 3, 4, 5)
val evenVec = vec.filter(x => x % 2 == 0)
println(evenVec)  // Output: Vector(2, 4)

৪. reduce ব্যবহার করে সারাংশ তৈরি (Using reduce for Aggregation)

reduce ফাংশনটি ভেক্টরের উপাদানগুলির ওপর একটি সংক্ষেপক অপারেশন (aggregation operation) চালাতে ব্যবহৃত হয়। এটি ভেক্টরের সব উপাদানকে একত্রিত করে একটি একক মান প্রদান করে।

val vec = Vector(1, 2, 3, 4, 5)
val sum = vec.reduce(_ + _)  // All elements added
println(sum)  // Output: 15

৫. fold ব্যবহার করে ডিফল্ট মান সহ সারাংশ তৈরি (Using fold for Aggregation with a Default Value)

fold ফাংশনটি reduce এর মতো, তবে এটি একটি ডিফল্ট মান প্রদান করতে সক্ষম, যা অপারেশন শুরু করার জন্য ব্যবহার করা হয়। এটি স্ক্যালার ধরনের উপাদানগুলোর সাথে কাজ করার সময় আরও নমনীয় হতে পারে।

val vec = Vector(1, 2, 3, 4, 5)
val sumWithDefault = vec.fold(0)(_ + _)  // Default value 0
println(sumWithDefault)  // Output: 15

৬. flatMap ব্যবহার করে ফ্ল্যাট ম্যাপিং (Using flatMap for Flattening and Mapping)

flatMap ফাংশনটি একটি লিস্ট বা কালেকশন থেকে একাধিক মান তৈরি করতে ব্যবহৃত হয়, এবং এটি ভেক্টরকে ফ্ল্যাট করে। এটি ম্যাপিং এবং ফ্ল্যাটিং একসঙ্গে করে।

val vec = Vector(1, 2, 3)
val expandedVec = vec.flatMap(x => Vector(x, x * 2))
println(expandedVec)  // Output: Vector(1, 2, 2, 4, 3, 6)

৭. ++ ব্যবহার করে দুটি ভেক্টর একত্রিত করা (Using ++ to Concatenate Vectors)

++ অপারেটরটি দুটি ভেক্টর একত্রিত করতে ব্যবহৃত হয়। এটি দুটি ভেক্টরের উপাদানগুলিকে একত্রিত করে নতুন একটি ভেক্টর তৈরি করে।

val vec1 = Vector(1, 2, 3)
val vec2 = Vector(4, 5, 6)
val mergedVec = vec1 ++ vec2
println(mergedVec)  // Output: Vector(1, 2, 3, 4, 5, 6)

৮. zip ব্যবহার করে দুটি ভেক্টরের উপাদান জোড়া করা (Zipping Two Vectors with zip)

zip ফাংশনটি দুটি ভেক্টরের উপাদানগুলোকে একসঙ্গে জোড়া করে। এটি একটি নতুন ভেক্টর তৈরি করে যেখানে প্রতিটি উপাদান দুটি কালেকশন থেকে একে একে মিলিত হয়।

val vec1 = Vector(1, 2, 3)
val vec2 = Vector("a", "b", "c")
val zippedVec = vec1.zip(vec2)
println(zippedVec)  // Output: Vector((1, a), (2, b), (3, c))

৯. slice ব্যবহার করে উপাদান কেটে ফেলা (Using slice to Extract a Subvector)

slice ফাংশনটি একটি নির্দিষ্ট সূচনা এবং শেষ ইনডেক্সের মধ্যে উপাদানগুলোকে কেটে ফেলে একটি নতুন ভেক্টর তৈরি করে।

val vec = Vector(1, 2, 3, 4, 5, 6)
val slicedVec = vec.slice(1, 4)
println(slicedVec)  // Output: Vector(2, 3, 4)

১০. distinct ব্যবহার করে ডুপ্লিকেট উপাদান অপসারণ (Removing Duplicates with distinct)

distinct ফাংশনটি ভেক্টরের ডুপ্লিকেট উপাদানগুলো সরিয়ে একটি নতুন ভেক্টর তৈরি করে।

val vec = Vector(1, 2, 2, 3, 4, 4, 5)
val uniqueVec = vec.distinct
println(uniqueVec)  // Output: Vector(1, 2, 3, 4, 5)

সারাংশ

ভেক্টর হল স্কালার একটি শক্তিশালী ডেটা স্ট্রাকচার যা ইনডেক্সড এবং ইমিউটেবল। এর সাহায্যে ডেটা ম্যানিপুলেশন খুব সহজ এবং কার্যকরী হয়। উপরের কৌশলগুলো আপনাকে ভেক্টরের উপাদানগুলির ওপর বিভিন্ন ফাংশনাল অপারেশন (যেমন: map, filter, reduce, fold, flatMap, ++, zip, slice, distinct) প্রয়োগ করতে সহায়তা করবে, যা কোডের কার্যকারিতা এবং পারফরম্যান্স উন্নত করবে।

Content added By
Promotion

Are you sure to start over?

Loading...