হ্যাশসেট সি # হ্যাশসেট ডেটা স্ট্রাকচারটি। নেট ফ্রেমওয়ার্ক 3.5 এ চালু করা হয়েছিল। বাস্তবায়িত সদস্যদের একটি সম্পূর্ণ তালিকা হ্যাশসেট এমএসডিএন পৃষ্ঠায় পাওয়া যাবে ।
- এটি কোথায় ব্যবহৃত হয়?
- আপনি এটি ব্যবহার করতে চান কেন?
হ্যাশসেট সি # হ্যাশসেট ডেটা স্ট্রাকচারটি। নেট ফ্রেমওয়ার্ক 3.5 এ চালু করা হয়েছিল। বাস্তবায়িত সদস্যদের একটি সম্পূর্ণ তালিকা হ্যাশসেট এমএসডিএন পৃষ্ঠায় পাওয়া যাবে ।
উত্তর:
এ HashSet
অবজেক্টের একটি সেট ধারণ করে, তবে এমন কোনও উপায়ে এটি আপনাকে সহজে এবং দ্রুত নির্ধারণ করতে দেয় যে কোনও বস্তু ইতিমধ্যে সেটে রয়েছে কি না। এটি অভ্যন্তরীণভাবে একটি অ্যারে পরিচালনা করে এবং অবজেক্টটিকে একটি সূচক ব্যবহার করে সংরক্ষণ করে যা বস্তুর হ্যাশকোড থেকে গণনা করা হয়। এখানে একবার দেখুন
HashSet
একটি অনিয়ন্ত্রিত সংগ্রহ যা অনন্য উপাদান রয়েছে। এটিতে স্ট্যান্ডার্ড কালেকশন অপারেশনগুলি অ্যাড, রিমুভ, কনটেইনস রয়েছে তবে এটি যেহেতু হ্যাশ-ভিত্তিক প্রয়োগ ব্যবহার করে, তাই এই ক্রিয়াকলাপগুলি হ'ল (1)। (উদাহরণস্বরূপ তালিকার বিপরীতে, যা অন্তর্ভুক্ত এবং অপসারণের জন্য ও (এন) রয়েছে) HashSet
এছাড়াও ইউনিয়ন , ছেদকেন্দ্র এবং প্রতিসাম্যগত পার্থক্য হিসাবে স্ট্যান্ডার্ড সেট ক্রিয়াকলাপ সরবরাহ করে । এখানে একবার দেখুন
সেটের বিভিন্ন বাস্তবায়ন রয়েছে। কেউ কেউ হ্যাশিং উপাদানগুলির মাধ্যমে সন্নিবেশ এবং অনুসন্ধানের কাজগুলিকে সুপার দ্রুত করে। তবে এর অর্থ হ'ল উপাদানগুলিতে যে ক্রমটি যুক্ত হয়েছিল তা হারিয়ে গেছে। অন্যান্য বাস্তবায়নগুলি ধীর চলমান সময়ের জন্য অতিরিক্ত অর্ডার সংরক্ষণ করে।
HashSet
C # বর্গ প্রথম পদ্ধতির জন্য যায়, এইভাবে না উপাদানের ক্রম সংরক্ষণের। এটি একটি নিয়মিত তুলনায় অনেক দ্রুত List
। কিছু প্রাথমিক মানদণ্ড দেখিয়েছিল যে প্রাথমিক ধরণের (ইনট, ডাবল, বুল ইত্যাদি) নিয়ে কাজ করার সময় হ্যাশসেট শালীনভাবে দ্রুত হয়। শ্রেণি অবজেক্টের সাথে কাজ করার সময় এটি অনেক দ্রুত। সুতরাং যে বিন্দু হ্যাশসেট দ্রুত হয়।
একমাত্র ধরা HashSet
হ'ল সূচকগুলির মাধ্যমে কোনও অ্যাক্সেস নেই। এক্সেস উপাদান আপনি হয় একটি গণনাকারী ব্যবহার করুন অথবা বিল্ট-ইন ফাংশন ব্যবহার রূপান্তর করতে পারেন HashSet
একটি মধ্যে List
যে মধ্য দিয়ে বারবার। এখানে একবার দেখুন
এ HashSet
এর অভ্যন্তরীণ কাঠামো (হ্যাশ) রয়েছে, যেখানে আইটেমগুলি দ্রুত অনুসন্ধান এবং সনাক্ত করা যায়। খারাপ দিকটি হ'ল একটি HashSet
(বা সূচী দ্বারা কোনও আইটেম পাওয়া) এর মাধ্যমে পুনরাবৃত্তি বরং ধীর rather
সুতরাং কেন কেউ জানতে চাইবে যে কোনও সেটে একটি এন্ট্রি ইতিমধ্যে উপস্থিত রয়েছে?
একটি পরিস্থিতি যেখানে একটি HashSet
দরকারী সেগুলি হ'ল তালিকা থেকে স্বতন্ত্র মানগুলি পাওয়া যেখানে নকল উপস্থিত থাকতে পারে। একবারে কোনও আইটেম যুক্ত হয়ে গেলে HashSet
তা নির্ধারণ করা দ্রুত আইটেমটি বিদ্যমান কিনা ( Contains
অপারেটর)।
অন্য সুবিধার HashSet
সেট অপারেশন হল: IntersectWith
, IsSubsetOf
, IsSupersetOf
, Overlaps
, SymmetricExceptWith
, UnionWith
।
আপনি যদি অবজেক্ট সীমাবদ্ধ ভাষার সাথে পরিচিত হন তবে আপনি এই সেট অপারেশনগুলি সনাক্ত করতে পারবেন। আপনি এটি দেখতে পাবেন যে এটি কার্যকর কার্যকর ইউএমএল বাস্তবায়নের এক ধাপ কাছাকাছি।
সহজভাবে বলেছিলেন এবং রান্নাঘরের গোপনীয়
বিষয়গুলি প্রকাশ না করেই: সাধারণভাবে সেট, এমন একটি সংগ্রহ যা কোনও সদৃশ উপাদান নেই এবং যার উপাদানগুলি কোনও নির্দিষ্ট ক্রমে নয়। সুতরাং, এ HashSet<T>
জেনেরিকের সমান List<T>
, তবে অর্ডার হারানোর ব্যয়ে দ্রুত অনুসন্ধানের জন্য (হ্যাশ টেবিলের মাধ্যমে, নাম দ্বারা বোঝানো হয়েছে) উপযুক্ত is
অ্যাপ্লিকেশন দৃষ্টিকোণ থেকে, যদি কারও কেবল অনুলিপি এড়ানো প্রয়োজন হয় তবে HashSet
আপনি যা খুঁজছেন তা হ'ল লুকআপ, সন্নিবেশ করান এবং জটিলতাগুলি সরান হ'ল হ'ল (1) - ধ্রুবক । এর অর্থ কী, এটি কতগুলি উপাদান HashSet
রয়েছে তা ঠিক একই পরিমাণে সময় নেবে কিনা তা তত গুরুত্বপূর্ণ নয় যেহেতু আপনি O (1) এ উপাদানগুলি সন্নিবেশ করছেন এটি এটি এই ধরণের জিনিসটিকে নিখুঁত করে তোলে।