समस्याओं में से एक यह होगा कि कई मामलों में, हैश तालिका की कुंजी एक स्ट्रिंग होगी। तो विधि के उपभोक्ताओं को हाथ से पहले जानना होगा कि डेटा निकालने के लिए किन कुंजियों का उपयोग करना है। यह डेटा तक पहुँचने के दौरान गलतफहमी के कारण त्रुटियों के लिए क्षमता प्रदान करेगा।
एक और खामी रिफ्लेक्टरबिलिटी है। यदि आप किसी सदस्य के नाम को बदलने के लिए बाद में निर्णय लेते हैं, तो आपके पास जादू के तार का एक गुच्छा है जिसे बदलने की भी आवश्यकता है। यह सबसे अच्छा आईडीई द्वारा प्रदान किए गए रिफैक्टरिंग टूल का उपयोग करके एक वर्ग के सदस्य का नाम बदलने के लिए बहुत सरल है। हैश टेबल के साथ, आपको संभवतः सभी स्रोत फ़ाइलों में एक खोज / रिप्लेसमेंट ऑपरेशन करना होगा जो समस्याग्रस्त हो सकता है।
अंत में, आप नाम और प्रकार दोनों के संदर्भ में सदस्य पहुंच के संकलन समय की जाँच खो देंगे। उत्तरार्द्ध ऐसी समस्या नहीं है यदि आपकी हैश टेबल में केवल एक प्रकार का ओबजेक्ट होता है, लेकिन यदि इसमें कई (समान पदानुक्रम श्रृंखला में) शामिल हैं, तो आप वास्तव में अपनी भाषा के प्रकार की प्रणाली का लाभ उठाना चाहते हैं और संकलन समय की जांच कर सकते हैं। अधिकांश IDE में आपको कुछ प्रकार की अंतर्मुखी / स्वत: पूर्ण सुविधाएँ होंगी - ये कार्य प्रकार प्रणाली को देखकर, लेकिन वे हैश टेबल कीज़ के साथ आपकी सहायता करने में सक्षम नहीं होंगे।
जैसा कि कई बार जब हैश टेबल (या कुंजी मूल्य जोड़े के अन्य ऐसे संग्रह) को वापस करना उचित होगा , तो आप इसका उपयोग तब करेंगे जब मान और कुंजी दोनों संकलन समय पर ज्ञात नहीं होंगे। उदाहरण के लिए, यदि आपके पास एक विधि है जो क्वेरी स्ट्रिंग को पार्स करती है और कुंजी और संबंधित मान लौटाती है, तो हैश टेबल एक अच्छा विकल्प होगा। इस मामले में आप किसी प्रकार की अपरिवर्तनीय या पठनीय हैश तालिका को वापस करने के बारे में भी सोचना चाहेंगे।
संपादित करें - जब आप गतिशील भाषाओं के बारे में बात कर रहे हों, तो इस उत्तर में उठाए गए अधिकांश बिंदु लागू होते हैं :)