আপনি একটি বিট খনন দেখতে কিভাবে পেয়েছেন অভিধান তার না যত সুস্পষ্ট - C # এর বাস্তবায়িত হয় HashMap (ক হ্যাশ টেবিল) অথবা TreeMap (ক সাজানো গাছ) (বা ConcurrentSkipListMap - একটি Skip তালিকা )।
যদি আপনি "মন্তব্যগুলি" বিভাগে খনন করেন:
অভিধান জেনেরিক শ্রেণিটি কীগুলির সেট থেকে মানগুলির একটি সেট থেকে ম্যাপিং সরবরাহ করে। অভিধানে প্রতিটি সংযোজনে একটি মান এবং এর সাথে সম্পর্কিত কী থাকে। এর কীটি ব্যবহার করে কোনও মান পুনরুদ্ধার করা খুব দ্রুত, ও (1) এর কাছাকাছি, কারণ অভিধান ক্লাসটি হ্যাশ টেবিল হিসাবে প্রয়োগ করা হয়।
এবং সেখানে আমরা এটা আছে। এটি একটি হ্যাশ টেবিল । নোট করুন যে আমি সেখানে উইকিপিডিয়া নিবন্ধটি সংযুক্ত করেছি - এটি মোটামুটি ভাল পঠিত। সংঘর্ষের রেজোলিউশনের উপর আপনি বিভাগটি পড়তে ইচ্ছুক হতে পারেন। কোনও প্যাথোলজিকাল ডেটা সেট পাওয়া সম্ভব যেখানে অনুসন্ধানটি ও (এন) এ রূপান্তরিত হয় (উদাহরণস্বরূপ, আপনি যে সমস্ত কিছু সন্নিবেশ করান সেটি কোনও কারণে হ্যাশ টেবিলের একই হ্যাশ মান বা সূচকে পড়ে এবং আপনি লিনিয়ার প্রোবিংয়ের সাথে চলে যান )।
অভিধানটি একটি সাধারণ উদ্দেশ্য সমাধান হিসাবে আপনি কংক্রিটের ধরণের (যেমন অভিধান হিসাবে) পাস করবেন না - আপনার ইন্টারফেসের চারপাশে পাস করা উচিত। এই ক্ষেত্রে, সেই ইন্টারফেসটি হ'ল IDictionary
( ডকস )। এটির জন্য, আপনি নিজের অভিধান প্রয়োগ করতে লেখার জন্য পুরোপুরি সক্ষম যা আপনার কাছে থাকা ডেটার জন্য উপযুক্তভাবে কাজ করে।
বিভিন্ন দেখার দক্ষতা হিসাবে / রয়েছে?
- একটি অচিরাচরিত তালিকা হাঁটা: ও (এন)
- বাছাই করা অ্যারেগুলির বাইনারি অনুসন্ধান: ও (লগ এন)
- সাজানো গাছ: ও (লগ এন)
- হ্যাশ টেবিল: ও (1)
বেশিরভাগ লোকের জন্য হ্যাশ টেবিলটি তারা চায়।
আপনি দেখতে পাচ্ছেন যে পরিবর্তিত সারণি অভিধানটি আপনি যা চান তা চাইলে:
SortedDictionary<TKey, TValue>
জেনেরিক বর্গ হে (লগ ঢ) আহরণ, যেখানে n অভিধানে উপাদানের সংখ্যা সঙ্গে একটি বাইনারি অনুসন্ধান বৃক্ষ হয়। এই ক্ষেত্রে, এটি SortedList<TKey, TValue>
জেনেরিক বর্গের মতো। দুটি ক্লাসে একই রকম অবজেক্ট মডেল রয়েছে এবং উভয়ের ও (লগ এন) পুনরুদ্ধার রয়েছে।
যদিও, আবারও, যদি ডেটা স্ট্রাকচারটি আপনার ডেটার সাথে আদর্শভাবে কাজ করে না তবে আপনার ডেটার জন্য সবচেয়ে ভাল কাজ করে এমন একটি লেখার জন্য আপনাকে সরঞ্জামগুলি (ইন্টারফেস) দেওয়া হবে।
অভিধানটি নিজেই একটি বিমূর্ত ডেটা টাইপ । আপনি আমাকে একটি অভিধান দেন এবং আমি জানি যে আমি এটির সাথে কী করতে পারি এবং সেখানকার সমস্ত সরঞ্জাম আমার অভিধান হিসাবে এটির প্রকৃতি দ্বারা ব্যবহার করতে পারে। আপনি যদি আমাকে একটি অ্যারেলিস্ট দিয়ে থাকেন তবে আমি তালিকা থেকে আইটেমগুলি অনুসন্ধান, সন্নিবেশ করানো বা মুছার জন্য নিজের কোডটি লিখছি। এটি আমার সময় নষ্ট করে এবং এর অর্থ হ'ল আমি কোডটি স্পট থেকে স্পট-এ বার বার অনুলিপি করায় বাগের আরও সম্ভাবনা রয়েছে।
Data Structures
এই উইকির লিঙ্কটি আপনার পক্ষে আরও সাহায্য করতে পারে