প্রযুক্তিগত বিবেচনার ভিত্তিতে, বিশেষত পারফরম্যান্সের ভিত্তিতে প্রচুর উত্তর দেওয়া হয়েছে। আমার মতে, পছন্দ TreeSet
এবং HashSet
বিষয়গুলির মধ্যে পছন্দ করুন ।
তবে আমি বরং বলব পছন্দটি প্রথমে ধারণাগত বিবেচনার দ্বারা চালিত হওয়া উচিত ।
যদি, আপনার প্রয়োজনীয় জিনিসগুলি হস্তক্ষেপ করার প্রয়োজন হয়, তবে একটি প্রাকৃতিক ক্রমটি অর্থে আসে না, তবে ব্যবহার করবেন না TreeSet
।
এটি একটি সাজানো সেট, যেহেতু এটি প্রয়োগ করে SortedSet
। সুতরাং এর অর্থ এটি হল যে আপনাকে ফাংশনটি ওভাররাইড করতে হবে যা শিক্ষার্থীদের মধ্যে কোনও প্রাকৃতিক ক্রম নেই বলে compareTo
রিটার্ন ফাংশনটি কী বোঝাতে পারে তার সাথে সামঞ্জস্য হওয়া উচিত । আপনি তাদের গড় গ্রেড দিয়ে তাদের অর্ডার করতে পারেন, ঠিক আছে, তবে এটি কোনও "প্রাকৃতিক ক্রম" নয়। ক্রিয়াequals
। উদাহরণস্বরূপ, যদি আপনার কাছে স্টুডেন্ট নামে একটি শ্রেণীর অবজেক্টের সেট থাকে তবে আমি এটিকে ভাবি নাTreeSet
compareTo
যখন দুটি বস্তু একই শিক্ষার্থীকে উপস্থাপন করে কেবল তখনই 0 ফেরত আসে না, তবে যখন দুটি পৃথক শিক্ষার্থীর সমান গ্রেড থাকে। দ্বিতীয় ক্ষেত্রে, equals
মিথ্যা প্রত্যাবর্তন করবে (যদি না আপনি যদি দুটি ভিন্ন শিক্ষার্থীর একই গ্রেড থাকে তবে দ্বিতীয়টি সঠিক বলে সিদ্ধান্ত না নেন যা equals
ফাংশনটির একটি বিভ্রান্তিমূলক অর্থ রাখে, ভুল অর্থ না বলে))
দয়া করে equals
এবং এর মধ্যে এই ধারাবাহিকতাটি লক্ষ্য করুন compareTo
alচ্ছিক, তবে দৃ strongly়ভাবে প্রস্তাবিত। অন্যথায় ইন্টারফেসের চুক্তিটি Set
ভঙ্গ হয়ে গেছে, আপনার কোডটিকে অন্য ব্যক্তির কাছে বিভ্রান্ত করছে, সুতরাং এটি সম্ভবত অপ্রত্যাশিত আচরণের দিকে পরিচালিত করে।
এই লিঙ্কটি এই প্রশ্নটি সম্পর্কিত তথ্যের একটি ভাল উত্স হতে পারে।