কম্পিউটার টিউটোরিয়াল

C#-তে ArrayList-র একটি পরিসর (Range) এর উপাদান সরাতে RemoveRange() মেথড ব্যবহার

ArrayList ক্লাসের RemoveRange(int index, int count) মেথড নির্দিষ্ট সূচক থেকে শুরু করে নির্দিষ্ট সংখ্যক উপাদান একসাথে সরিয়ে দেয়। এটি O(n) অপারেশন যেখানে n হলো সরানো উপাদান সংখ্যা + শিফটিং ওভারহেড।

উদাহরণ ১: ArrayList থেকে মধ্যবর্তী রেঞ্জ সরানো

using System;
using System.Collections;

public class Demo {
    public static void Main(string[] args) {
        ArrayList list1 = new ArrayList();
        list1.Add("A");
        list1.Add("B");
        list1.Add("C");
        list1.Add("D");
        list1.Add("E");
        list1.Add("F");
        list1.Add("G");
        list1.Add("H");
        list1.Add("I");

        Console.WriteLine("ArrayList1 উপাদানসমূহ...");
        foreach (string res in list1) {
            Console.WriteLine(res);
        }

        ArrayList list2 = new ArrayList();
        list2.Add("A");
        list2.Add("B");
        list2.Add("C");
        list2.Add("D");
        list2.Add("E");
        list2.Add("F");
        list2.Add("G");
        list2.Add("H");
        list2.Add("I");

        Console.WriteLine("\nArrayList2 উপাদানসমূহ...");
        foreach (string res in list2) {
            Console.WriteLine(res);
        }

        Console.WriteLine("ArrayList1 == ArrayList2? = " + list1.Equals(list2));  // False (আলাদা অবজেক্ট)

        // সূচক ৩ থেকে ২টি উপাদান সরানো (D, E)
        list2.RemoveRange(3, 2);

        Console.WriteLine("\nরেঞ্জ সরানোর পর ArrayList2 উপাদানসমূহ...");
        foreach (string res in list2) {
            Console.WriteLine(res);
        }
    }
}

আউটপুট

ArrayList1 উপাদানসমূহ...
A
B
C
D
E
F
G
H
I

ArrayList2 উপাদানসমূহ...
A
B
C
D
E
F
G
H
I
ArrayList1 == ArrayList2? = False

রেঞ্জ সরানোর পর ArrayList2 উপাদানসমূহ...
A
B
C
F
G
H
I

উদাহরণ ২: বড় রেঞ্জ সরানো (প্রায় সব উপাদান)

using System;
using System.Collections;

public class Demo {
    public static void Main(string[] args) {
        ArrayList list1 = new ArrayList();
        list1.Add("A");
        list1.Add("B");
        list1.Add("C");
        list1.Add("D");
        list1.Add("E");
        list1.Add("F");
        list1.Add("G");
        list1.Add("H");
        list1.Add("I");

        Console.WriteLine("ArrayList1 উপাদানসমূহ...");
        foreach (string res in list1) Console.WriteLine(res);

        ArrayList list2 = new ArrayList();
        list2.Add("One");
        list2.Add("Two");
        list2.Add("Three");
        list2.Add("Four");
        list2.Add("Five");
        list2.Add("Six");
        list2.Add("Seven");

        Console.WriteLine("\nArrayList2 উপাদানসমূহ...");
        foreach (string res in list2) Console.WriteLine(res);

        // সূচক ১ থেকে ৬টি উপাদান সরানো (Two থেকে Seven)
        list2.RemoveRange(1, 6);

        Console.WriteLine("\nরেঞ্জ সরানোর পর ArrayList2 উপাদানসমূহ...");
        foreach (string res in list2) {
            Console.WriteLine(res);
        }
    }
}

আউটপুট

ArrayList1 উপাদানসমূহ...
A
B
C
D
E
F
G
H
I

ArrayList2 উপাদানসমূহ...
One
Two
Three
Four
Five
Six
Seven

রেঞ্জ সরানোর পর ArrayList2 উপাদানসমূহ...
One

RemoveRange() প্যারামিটার ও আচরণ

প্যারামিটারবিবরণ
indexশুরুর সূচক (শূন্য-ভিত্তিক)। ০ থেকে Count-১ পর্যন্ত।
countসরানো উপাদান সংখ্যা। ০ বা তার বেশি।
  • index নেগেটিভ বা index + count > Count হলে ArgumentOutOfRangeException নিক্ষেপ করে।
  • count ০ হলে কোনো পরিবর্তন হয় না (no-op)।
  • সরানোর পর বাকি উপাদানগুলোর সূচক আপডেট হয় (শিফট হয়)।
  • ArrayList নন-জেনেরিক, object সংরক্ষণ করে (বক্সিং/আনবক্সিং ওভারহেড)।

আধুনিক বিকল্প: List<T>.RemoveRange()

// জেনেরিক List - টাইপ সেফ, ভালো পারফরম্যান্স
List<string> list = new List<string> { "A", "B", "C", "D", "E", "F", "G" };
list.RemoveRange(2, 3);  // "C", "D", "E" সরানো
// ফলাফল: A, B, F, G

ArrayList এর অন্যান্য রিমুভ মেথড

  • Remove(object obj) - প্রথম মিলে যাওয়া উপাদান সরায় (bool রিটার্ন)
  • RemoveAt(int index) - নির্দিষ্ট সূচক 위치한 উপাদান সরায়
  • Clear() - সব উপাদান সরায়

সুপারিশ: নতুন কোডে ArrayList এর পরিবর্তে List<T> ব্যবহার করুন। এটি টাইপ-সেফ, ফাস্ট, এবং বক্সিং ওভারহেড নেই।

  1. C#-এ লিস্ট থেকে রেঞ্জ অনুযায়ী উপাদান পাওয়া

  2. C#-এ লিস্ট থেকে ডুপ্লিকেট এলিমেন্ট সরানো

  3. জাভাতে ArrayList-এ থেকে সব এলিমেন্ট রিমূভ করা

  4. জাভাতে ArrayList অবজেক্ট থেকে রিডান্ডান্ট (অনাবশ্যক) এলিমেন্ট সরাতে কীভাবে?