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