Perbezaan Antara HashMap dan Hashtable

Rangka Kerja Koleksi Jawa menyediakan satu set kelas pengumpulan. Setiap kelas mempunyai kekuatan dan kelemahan prestasi sendiri. Beberapa kelas menyediakan pelaksanaan sepenuhnya yang boleh digunakan sebagai. Yang lain adalah abstrak yang menyediakan pelaksanaan rangka yang digunakan sebagai titik permulaan untuk membuat koleksi. Pelaksanaan kutipan menggunakan rangka kerja penyelaras-pembalut untuk menyediakan kelas yang diselaraskan, jika tidak, pelaksanaan tidak disegerakkan. Beberapa kelas menyediakan pelaksanaan antara muka peta.

Platform Java mengandungi tiga pelaksana Peta tujuan umum: HashMap, TreeMap, dan LinkedHashMap. HashMap dan Hashtable adalah dua koleksi di Java yang digunakan untuk menyimpan pasangan kunci / nilai dalam jadual hash. Hashtable adalah Peta disegerakkan dan HashMap adalah Peta yang tidak disegerakkan. Walau bagaimanapun, jika anda perlu menggunakan Peta disegerakkan, Hashtable lebih cepat daripada menggunakan HashMap dalam pembalut yang disegerakkan. Kedua-duanya adalah koleksi berasaskan hash di Jawa tetapi mereka mempunyai perbezaan yang saksama mereka. Kami menyerlahkan beberapa perbezaan utama antara kedua-dua untuk membantu anda memahami dengan lebih baik istilah.

Apa itu HashMap?

HashMap adalah pelaksanaan Peta berdasarkan jadual hash yang menyediakan prestasi malar masa untuk memasukkan dan mencari pasangan. Kelas HashMap menyediakan pelaksanaan peta yang berdasarkan struktur data Hashtable. Pelaksanaan ini menyokong semua operasi Peta dan membolehkan beberapa nilai nol tetapi hanya satu kunci null. Ia menggunakan pasangan kunci / nilai untuk menyimpan nilai dalam jadual hash. Ia adalah Peta yang tidak disegerakkan yang bermaksud ia bukan benang selamat dan tidak boleh dikongsi antara beberapa benang tanpa penyegerakan yang betul.

Apa itu Hashtable?

Tidak seperti HashMap, Hashtable adalah Peta disegerakkan dan ia adalah benang-selamat yang bermakna ia boleh dikongsi antara beberapa benang. Dalam Hashtable, anda menentukan objek yang boleh digunakan sebagai kunci dan nilai yang pergi dengan kunci. Kekunci peta Hashtable ke nilai dengan bantuan fungsi hash. Java menyediakan fungsi ini dalam bentuk hashcode () kaedah Objek, yang kelas menimpa untuk menyediakan kod hash yang sesuai. Tidak seperti HashMap, Hashtable tidak menyokong nilai-nilai null dan kekunci null kerana terdapat semakan null dalam pelaksanaan kaedah meletakkan Hashtable.

Perbezaan antara HashMap dan Hashtable

  1. Asas HashMap Vs. Hashtable

Kedua-dua koleksi berasaskan hash dalam Java digunakan untuk menyimpan data dalam pasangan kunci / nilai. HashMap adalah pelaksanaan Peta berdasarkan jadual hash yang menyediakan prestasi malar masa untuk memasukkan dan mencari pasangan. Prestasi boleh disesuaikan dengan penggunaan pembina yang membolehkan anda menetapkan faktor kapasiti dan beban jadual hash. Hashtable asasnya hampir sama dengan HashMap, walaupun di bawah nama kaedah. Ia menyimpan pasangan kunci / nilai dalam jadual hash. Dalam Hashtable, anda menentukan objek yang boleh digunakan sebagai kunci dan nilai yang pergi dengan kunci.

  1. Penyegerakan HashMap Vs. Hashtable

Kedua-dua HashMap dan Hashtable menggunakan teknik hashing untuk menyimpan nilai berdasarkan kunci. Seperti HashMap, Hashtable menggunakan pasangan kunci / nilai untuk menyimpan nilai dalam jadual hash. Walau bagaimanapun, perbezaan utama antara keduanya adalah penyegerakan. HashMap adalah Peta yang tidak disegerakkan manakala Hashtable adalah Peta disegerakkan. Ini bermakna HashMap bukan benang selamat dan tidak dapat dikongsi antara beberapa benang tanpa kod penyegerakan yang betul. Sebaliknya, Hashtable adalah benang-selamat dan boleh dikongsi antara beberapa benang. Hashtable lebih cepat daripada menggunakan HashMap dalam pembalut yang disegerakkan, jika anda perlu menggunakan Peta disegerakkan.

  1. Null Keys dan Null Values ​​for HashMap Vs. Hashtable

Kelas HashMap menyediakan pelaksanaan peta yang berdasarkan struktur data Hashtable. Pelaksanaan ini menyokong semua operasi Peta dan membolehkan beberapa nilai batal tetapi hanya satu kunci null supaya ia dapat mengekalkan sifat kunci yang unik. Walau bagaimanapun, ia tidak menjamin sebarang perintah yang disimpan di dalamnya. Hashtable, sebaliknya, memaparkan kunci kepada nilai-nilai dengan bantuan fungsi hash. Tidak seperti HashMap, Hashtable tidak menyokong nilai-nilai null dan kekunci null kerana terdapat semakan null dalam pelaksanaan kaedah meletakkan Hashtable.

  1. Prestasi HashMap Vs. Hashtable

Kerana HashMap bukan Peta disegerakkan ia lebih cepat dan lebih baik daripada Hashtable dari segi prestasi, dan sebenarnya, menggunakan memori kurang daripada Hashtable. Walaupun mereka hampir sama, Hashtable sedikit lebih lambat daripada HashMap tetapi lebih cepat daripada HashMap yang disegerakkan. Secara bersamaan, ia tidak selamat untuk menggunakan Hashtable dengan akses bertumpu kerana hanya kaedah yang disegerakkan. Hashtable ialah rakan sejawat yang disegerakkan kepada HashMap. Objek yang tidak disegerakkan berfungsi dengan lebih baik apabila dibandingkan dengan objek yang disegerakkan seperti Hashtable yang melakukan lebih baik dalam satu persekitaran berulir.

HashMap vs Hashtable: Carta Perbandingan

 

Ringkasan HashMap Vs. Hashtable

Kelas HashMap memberikan anda Peta unsorted, tidak teratur. Oleh itu, apabila anda memerlukan Map dan anda tidak peduli dengan pesanan di mana penyertaan disimpan, maka HashMap adalah cara untuk pergi.

Hashtable, seperti Vektor, telah dihidupkan dari zaman Jawa prasejarah. Sama seperti Vektor adalah sejajar yang disegerakkan kepada ArrayList yang lebih moden dan maju, Hashtable adalah rakan sejahtera yang disegerakkan kepada HashMap. Walau bagaimanapun, kelas tidak boleh disegerakkan, jadi apabila kita mengatakan bahawa Hashtable adalah Peta disegerakkan, ini bermakna kaedah utama kelas disegerakkan. 

Walaupun kedua-duanya hampir sama, perbezaannya terletak pada cara mereka disegerakkan dan bagaimana mereka melakukan. HashMap melakukan lebih baik dalam persekitaran pelbagai thread manakala Hashtable melakukan lebih baik dalam satu persekitaran berulir.