หนึ่งในปัญหาที่เกิดขึ้นคือในหลายกรณีกุญแจสำหรับตารางแฮชจะเป็นสตริง ดังนั้นผู้บริโภคของวิธีการจะต้องรู้ก่อนมือซึ่งคีย์ที่ใช้ในการดึงข้อมูล สิ่งนี้จะให้โอกาสในการเกิดข้อผิดพลาดเนื่องจากการสะกดผิดเมื่อเข้าถึงข้อมูล
ข้อเสียเปรียบก็คือ refactorability หากคุณตัดสินใจในภายหลังเพื่อเปลี่ยนชื่อของสมาชิกคุณจะต้องมีสายเวทที่จำเป็นต้องเปลี่ยน มันง่ายกว่ามากที่จะเปลี่ยนชื่อสมาชิกคลาสโดยใช้เครื่องมือการเปลี่ยนโครงสร้างที่จัดทำโดย IDE ที่ดีที่สุด ด้วยตารางแฮชคุณอาจต้องทำการค้นหา / แทนที่ในไฟล์ต้นฉบับทั้งหมดซึ่งอาจเป็นปัญหาได้
สุดท้ายคุณจะสูญเสียการตรวจสอบเวลาการคอมไพล์ของการเข้าถึงสมาชิก - ทั้งในแง่ของชื่อและประเภท หลังไม่ใช่ปัญหาดังกล่าวหากตารางแฮชของคุณมีประเภทของ obejct เพียงประเภทเดียว แต่ถ้ามันมีหลายอย่าง (แม้จะอยู่ในลำดับชั้นเดียวกัน) คุณต้องการใช้ประโยชน์จากระบบประเภทของภาษาของคุณและรวบรวมเวลาตรวจสอบที่นั่น ใน IDE ส่วนใหญ่คุณจะมีคุณสมบัติ Intellisense / การเติมข้อความอัตโนมัติบางอย่าง - งานเหล่านี้โดยดูที่ระบบพิมพ์ แต่พวกมันจะไม่สามารถช่วยคุณได้ด้วยการใช้แป้นตารางแฮช
สำหรับครั้งเมื่อมันจะมีความเหมาะสมที่จะกลับตารางแฮช (หรือคอลเลกชันอื่น ๆ ของคู่ค่าคีย์) คุณจะใช้นี้เมื่อทั้งค่าและกุญแจที่จะไม่รู้จักกันที่รวบรวมเวลา ตัวอย่างเช่นหากคุณมีวิธีที่แยกวิเคราะห์สตริงแบบสอบถามและส่งคืนคีย์และค่าที่สอดคล้องกันตารางแฮชจะเป็นตัวเลือกที่ดี ในกรณีนี้คุณจะต้องคิดถึงการส่งคืนตารางแฮชที่ไม่เปลี่ยนรูปหรือแบบอ่านอย่างเดียว
แก้ไข - คะแนนส่วนใหญ่ในคำตอบนี้หยุดใช้เมื่อคุณพูดถึงภาษาแบบไดนามิก :)