2008-11-06 29 views
45

Sự khác biệt giữa Bản đồ băm và ADT từ điển là gì. Và khi thích cái khác hơn. Đối với bài tập lập trình của tôi, người hướng dẫn của tôi đã yêu cầu sử dụng một trong số họ nhưng tôi không thấy có sự khác biệt nào giữa cả hai. Chương trình được cho là làm việc với một số không lớn. của chuỗi. Bất kỳ đề xuất?Sự khác biệt giữa HashMap và từ điển ADT

Trả lời

46

Về mặt Java, cả lớp HashMap và lớp Dictionarytriển khai loại dữ liệu trừu tượng "Bản đồ". Các kiểu dữ liệu trừu tượng không dành riêng cho bất kỳ một ngôn ngữ lập trình nào, và ADT Bản đồ cũng có thể được gọi là Hash, hoặc một từ điển, hoặc một mảng liên kết (những người khác tại http://en.wikipedia.org/wiki/Associative_array). (Chú ý chúng tôi đang thực hiện một sự phân biệt giữa lớp Dictionary và từ điển ADT.)

Các Dictionarylớp đã được đánh dấu là đã lỗi thời, vì vậy tốt nhất không sử dụng nó.

+6

Lưu ý rằng có sự khác biệt giữa loại dữ liệu trừu tượng "Bản đồ" và giao diện Java của "Bản đồ". Như đã đề cập trong các câu trả lời khác, lớp 'Dictionary' kế thừa thực hiện _not_ thực hiện giao diện Java' Map', nhưng lớp 'HashMap' thực hiện. –

7

Trong Java, HashMap triển khai giao diện Bản đồ trong khi từ điển thì không. Điều đó làm cho từ điển lỗi thời (theo tài liệu API). Đó là, cả hai đều làm một chức năng tương tự như vậy bạn có quyền mà họ có vẻ rất giống nhau ... HashMap là một loại từ điển.

Bạn nên sử dụng HashMap.

13

stack này Overflow bài làm một công việc tốt giải thích sự khác biệt chính:

Java hashmap vs hashtable

Lưu ý rằng Hashtable chỉ đơn giản là một thực hiện các điển ADT. Cũng lưu ý rằng Java xem xét từ điển "obsolete".

Thực tế là Hashtable được đồng bộ hóa không mua cho bạn nhiều nhất cho hầu hết các lần sử dụng. Sử dụng HashMap.

+0

Cảm ơn bạn! Nó hữu ích! – trillions

0

Bản đồ là giao diện cho ADT trong Java, cấu trúc dữ liệu độc lập về ngôn ngữ chung để duy trì khóa <, giá trị > cặp và được giới thiệu trong Java 1.2.

Từ điển (không phải triển khai Bản đồ) là lớp Tóm tắt cho cùng một mục đích được giới thiệu trước đó trong JDK 1.0. Lớp con duy nhất mà nó có là Hashtable mà chính nó đang thực hiện Bản đồ. Tuy nhiên, lớp Từ điển đã lỗi thời và bạn có thể quên nó.

Có sự khác biệt giữa các thành viên chức năng của Bản đồ và từ điển, tuy nhiên bạn có thể thấy sự khác biệt giữa HashMap và Hashtable hữu ích hơn. here bạn có thể tìm thấy sự khác biệt.

Các vấn đề liên quan