hashCode()
বর্গ বুলিয়ান পদ্ধতি ভালো বাস্তবায়িত হয়:
public int hashCode() {
return value ? 1231 : 1237;
}
কেন এটি 1231 এবং 1237 ব্যবহার করে? আর কিছু না কেন?
hashCode()
বর্গ বুলিয়ান পদ্ধতি ভালো বাস্তবায়িত হয়:
public int hashCode() {
return value ? 1231 : 1237;
}
কেন এটি 1231 এবং 1237 ব্যবহার করে? আর কিছু না কেন?
উত্তর:
1231 এবং 1237 কেবল দুটি (পর্যাপ্ত পরিমাণে) স্বেচ্ছাসেবী সংখ্যা । অন্য দুটি বড় সংখ্যক সূক্ষ্ম কাজ করবে।
প্রাইমস কেন?
ধরুন যে এক সেকেন্ডের জন্য আমরা সম্মিলিত সংখ্যাগুলি বেছে নিয়েছি (নন-প্রাইমগুলি), 1000 এবং 2000 বলুন a যখন একটি হ্যাশ টেবিলের মধ্যে বুলিয়ানগুলি সন্নিবেশ করা হচ্ছে তখন সত্য এবং মিথ্যা বালতি 1000 % N
শ্রমের মধ্যে যাবে 2000 % N
(যেখানে বালতির N
সংখ্যা রয়েছে)।
এখন লক্ষ্য করুন
1000 % 8
হিসাবে একই বালতি 2000 % 8
1000 % 10
হিসাবে একই বালতি 2000 % 10
1000 % 20
হিসাবে একই বালতি 2000 % 20
অন্য কথায়, এটি অনেক সংঘর্ষে বাড়ে ।
এটি কারণ (1000 (2 3 , 5 3 ) এর ফ্যাক্টরাইজেশন এবং 2000 (2 4 , 5 3 ) এর গুণককরণের এতগুলি সাধারণ কারণ রয়েছে। সুতরাং প্রাথমিক সংখ্যাগুলি বেছে নেওয়া হয়, যেহেতু তাদের বালতির আকারের কোনও সাধারণ কারণের সম্ভাবনা নেই।
কেন বড় প্রাইমস। 2 এবং 3 করবেন না?
সম্মিলিত বস্তুর জন্য হ্যাশ কোডগুলি গণনা করার সময় উপাদানগুলির জন্য হ্যাশ কোড যুক্ত করা সাধারণ common বিপুল সংখ্যক বালতি সহ হ্যাশ সেটটিতে যদি খুব ছোট মান ব্যবহার করা হয় তবে অবজেক্টগুলির অসম বন্টন শেষ হওয়ার ঝুঁকি রয়েছে।
সংঘর্ষের বিষয়টি কি গুরুত্বপূর্ণ? বুলিয়ানদের যেভাবেই দুটি আলাদা মান রয়েছে?
মানচিত্রগুলিতে অন্যান্য বস্তুর সাথে বুলিয়ান থাকতে পারে। এছাড়াও, ড্রুনিক্সের নির্দেশ অনুসারে, যৌগিক বস্তুর হ্যাশ ফাংশন তৈরির একটি সাধারণ উপায় হ'ল সাব-কম্পোনেন্টগুলির হ্যাশ কোড বাস্তবায়ন পুনরায় ব্যবহার করা যার ক্ষেত্রে বড় প্রাইমগুলি ফিরিয়ে দেওয়া ভাল।
সম্পর্কিত প্রশ্নগুলি:
2*1231 = 2462
বালতি প্রয়োজন । সংঘর্ষের পরিস্থিতি কি এমন পরিস্থিতিতে আছে?