HashSet در C#

شنبه 22 شهریور 1393

استفاده از HashSet برای نمایش مجموعه ها

HashSet  در C#

در این مقاله سعی داریم تا  در مورد  مجموعه HashSet  در C# مطالبی را بیاموزیم. این مجموعه بسیار خوب از  C# 3.5 قابل دسترس است که همچون مجموعه های دیگر می تواند برای نمایش مجموعه ای از مقادیر استفاده شود.این مجموعه یک مجموعه بهینه شده است ،که به حذف کپی رشته یا عناصر  کمک می کند.هر زمانی که یک ایتم در مجموعه اضافه می شود چک میشود که این ایتم قبلا در مجموعه بوده یا خیر و در صورتی که قبلا موجود نبوده ایتم اضافه می شود.

بیایید  تا مثالی در این مورد داشته باشیم:

using System;
using System.Collections.Generic;
 
namespace CSharpHashSet
{
    class Program
    {
        static void Main(string[] args)
        { 
            HashSet<string> nameHashSet=
                new HashSet<string>
                {
                    "Jalpesh", "Vishal", "Tushar", "Jalpesh"
                };
            foreach (var item in nameHashSet)
            {
                Console.WriteLine(item);
            }
            Console.ReadKey();
        }
    }
}

حالا اگر به مثال بالا با دقت نگاه کنید می بینید که یک HashSet ازاسامی از نوع رشته داریم که نام Jalpesh  در ان تکراری است.یک لوپ نیز داریم که ایتم ها را یکی یکی در مجموعه می گیرد و با دستور Console.WriteLine چاپ می کند.

حالا بیایید خروجی را با هم ببینیم:

دیدید نام Jalpesh در خروجی همان طور که انتظار داشتیم فقط یک بار امده است این همان کاری است که HashSet انجام می دهد و به طور اتوماتیک از ایجاد کپی جلوگیری می کند.

مزایای HashSet :

به دلیل نبود تکرار و استفاده از الگوریتمی بر پایه hash سرعت جستجو بسیار بالاست.

شما می توانید مانند هر مجموعه استاندارد دیگر ایتم ها را بر اساس index هر ایتم پیدا کنید.

چگونگی اضافه یا حذف عنصر در HashSet:

راه های بسیاری برای مقدار دهی  وجود دارد که در مثال بالا یکی از انان را فراگرفتیم اما راه دیگر استفاده از متد Add و Remove است .

nameHashSet.Add("Chirag");
nameHashSet.Remove("Tushar");

حالا خروجی به این صورت است:

در HashSet می توان از متد های استانداردی همچون Clear, Contains و غیره استفاده کرد.

لیست  کامل متد های قابل استفاده در مجموعه HashSet در MSDN قابل دسترسی است:

http://msdn.microsoft.com/en-us/library/bb359438(v=vs.110).aspx

جعفری

نویسنده 22 مقاله در برنامه نویسان
  • C#.net
  • 6k بازدید
  • 16 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید