জোন স্কিটির উত্তরটি একটি দক্ষ উপায়ে দুটি পরিস্থিতি ( nullমান সহ মানচিত্র নয় মানচিত্র null) ভালভাবে সম্বোধন করেছে ।
নম্বর এন্ট্রি এবং দক্ষতার উদ্বেগ সম্পর্কে, আমি কিছু যুক্ত করতে চাই।
আমার একটি 1.000 এন্ট্রি বলার সাথে একটি হ্যাশম্যাপ রয়েছে এবং আমি দক্ষতাটি উন্নত করতে চাই। যদি হ্যাশম্যাপটি খুব ঘন ঘন অ্যাক্সেস করা হয়ে থাকে তবে প্রতিটি অ্যাক্সেসে মূল অস্তিত্বের জন্য পরীক্ষা করা বড় ওভারহেডের দিকে নিয়ে যায়।
1.000 এন্ট্রি সহ একটি মানচিত্র একটি বিশাল মানচিত্র নয়।
পাশাপাশি 5.000 বা 10.000 এন্ট্রি সহ একটি মানচিত্র।
Mapএই জাতীয় মাত্রা দিয়ে দ্রুত পুনরুদ্ধার করার জন্য ডিজাইন করা হয়েছে।
এখন, এটি ধরে নেওয়া হয়েছে যে hashCode()মানচিত্র কীগুলি একটি ভাল বিতরণ সরবরাহ করে।
আপনি যদি কোনও Integerকী টাইপ হিসাবে ব্যবহার করতে পারেন তবে এটি করুন।
এর hashCode()পদ্ধতিটি অত্যন্ত দক্ষ কারণ সংঘর্ষগুলি অনন্য intমূল্যবোধগুলির পক্ষে সম্ভব নয় :
public final class Integer extends Number implements Comparable<Integer> {
...
@Override
public int hashCode() {
return Integer.hashCode(value);
}
public static int hashCode(int value) {
return value;
}
...
}
যদি কীটির জন্য, আপনাকে অন্য একটি অন্তর্নির্মিত ধরণের ব্যবহার করতে হবে যেমন Stringউদাহরণস্বরূপ ব্যবহৃত হয় Map, আপনার কিছু সংঘর্ষ হতে পারে তবে 1 হাজার থেকে কয়েক হাজার অবজেক্টে Map, String.hashCode()পদ্ধতি হিসাবে আপনার খুব কম হওয়া উচিত একটি ভাল বিতরণ সরবরাহ করে।
আপনি যদি একটি কাস্টম প্রকার ব্যবহার করেন তবে ওভাররাইড hashCode()এবং equals()সঠিকভাবে এবং সামগ্রিকভাবে নিশ্চিত করুন যা hashCode()একটি ন্যায্য বিতরণ সরবরাহ করে।
আপনি এটি আইটেম রেফারেন্স 9 এর Java Effectiveউল্লেখ করতে পারেন।
এখানে একটি পোস্ট এখানে উপায় বিবরণ।