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

C#-তে HashSet থেকে অন্য সংগ্রহের সব উপাদান সরাতে ExceptWith() মেথড ব্যবহার

HashSet<T> ক্লাসের ExceptWith(IEnumerable<T> other) মেথড বর্তমান HashSet-এ থেকে other সংগ্রহে উপস্থিত সব উপাদান সরিয়ে দেয়। এটি সেট থিওরির ডিফারেন্স (A - B) অপারেশনের সমান। মুল HashSet মডিফাই হয় (in-place) এবং কোনো ভ্যালু রিটার্ন করে না।

উদাহরণ ১: স্ট্রিং HashSet থেকে অন্য HashSet-র উপাদান সরানো

using System;
using System.Collections.Generic;

public class Demo {
    public static void Main(string[] args) {
        HashSet<string> set1 = new HashSet<string>();
        set1.Add("রায়ান");
        set1.Add("টম");
        set1.Add("এন্ডি");
        set1.Add("টিম");

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

        HashSet<string> set2 = new HashSet<string>();
        set2.Add("জন");
        set2.Add("জ্যাকব");
        set2.Add("রায়ান");
        set2.Add("টম");
        set2.Add("এন্ডি");
        set2.Add("টিম");
        set2.Add("স্টিভ");
        set2.Add("মার্ক");

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

        Console.WriteLine("\nHashSet1 == HashSet2? = " + set1.Equals(set2));  // False

        // set2-তে থেকে set1-র উপাদানগুলো সরানো (set2 মডিফাই হবে)
        set2.ExceptWith(set1);

        Console.WriteLine("\nset2.ExceptWith(set1) কল করার পর set2-র অবশিষ্ট উপাদান:");
        foreach (string i in set2) {
            Console.WriteLine(i);
        }
    }
}

আউটপুট

HashSet1 উপাদানসমূহ...
রায়ান
টম
এন্ডি
টিম

HashSet2 উপাদানসমূহ...
জন
জ্যাকব
রায়ান
টম
এন্ডি
টিম
স্টিভ
মার্ক

HashSet1 == HashSet2? = False

set2.ExceptWith(set1) কল করার পর set2-র অবশিষ্ট উপাদান:
জন
জ্যাকব
স্টিভ
মার্ক

উদাহরণ ২: আরও একটি উদাহরণ

using System;
using System.Collections.Generic;

public class Demo {
    public static void Main(string[] args) {
        HashSet<string> set1 = new HashSet<string>();
        set1.Add("জ্যাকব");
        set1.Add("রায়ান");
        set1.Add("টম");
        set1.Add("এন্ডি");
        set1.Add("টিম");
        set1.Add("স্টিভ");
        set1.Add("মার্ক");

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

        HashSet<string> set2 = new HashSet<string>();
        set2.Add("কেভিন");
        set2.Add("জ্যাকব");
        set2.Add("রায়ান");
        set2.Add("টম");
        set2.Add("এন্ডি");
        set2.Add("টিম");
        set2.Add("স্টিভ");
        set2.Add("মার্ক");

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

        Console.WriteLine("\nHashSet1 == HashSet2? = " + set1.Equals(set2));  // False

        set2.ExceptWith(set1);

        Console.WriteLine("\nset2.ExceptWith(set1) কল করার পর set2-র অবশিষ্ট উপাদান:");
        foreach (string i in set2) {
            Console.WriteLine(i);
        }
    }
}

আউটপুট

HashSet1 উপাদানসমূহ...
জ্যাকব
রায়ান
টম
এন্ডি
টিম
স্টিভ
মার্ক

HashSet2 উপাদানসমূহ...
কেভিন
জ্যাকব
রায়ান
টম
এন্ডি
টিম
স্টিভ
মার্ক

HashSet1 == HashSet2? = False

set2.ExceptWith(set1) কল করার পর set2-র অবশিষ্ট উপাদান:
কেভিন

গুরুত্বপূর্ণ পার্থক্য: ExceptWith vs LINQ Except

বৈশিষ্ট্যHashSet.ExceptWithLINQ Enumerable.Except
মডিফিকেশনইন-প্লেস (মুল HashSet পরিবর্তন হয়)নতুন সিকোয়েন্স রিটার্ন করে (মুল অপরিবর্তিত)
রিটার্ন টাইপvoidIEnumerable<T>
পারফরম্যান্সO(n) - হ্যাশ লুকআপO(n+m) - নতুন অ্যালোকেশন
অর্ডার সংরক্ষণনা (HashSet অর্ডারদার নয়)হ্যাঁ (সোর্স সিকোয়েন্সের অর্ডার)

অন্যান্য সেট অপারেশন

  • IntersectWith(other) - শুধু সাধারণ উপাদান রাখে (ইন্টারসেকশন)
  • UnionWith(other) - দুটি সেট একত্রিত করে (ইউনিয়ন)
  • SymmetricExceptWith(other) - সিমেট্রিক ডিফারেন্স (শুধু যেগুলো একটি সেটে আছে)
  • IsSubsetOf / IsSupersetOf / IsProperSubsetOf / IsProperSupersetOf - রিলেশন চেক
  • Overlaps(other) - কমপক্ষে একটি সাধারণ উপাদান আছে কিনা
  • SetEquals(other) - দুটি সেট সমান কিনা

টিপ: যদি মুল HashSet সংরক্ষণ করতে চান, তবে ExceptWith কল করার আগে কপি নিন: var copy = new HashSet<T>(original);

  1. C#-এ HashSet প্রপার সাবসেট কিনা তা যাচাই করুন

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

  3. C#-এ কালেকশন (Collection) থেকে এলিমেন্ট রিট্রিভ (Retrieve) করা

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