Bản năng đầu tiên của tôi là nói rằng mỗi khóa là một đối tượng và có mã băm, là mã được sử dụng để xác định xem liệu một bản sao có đang được chèn hay không. Tuy nhiên, tôi không thể tìm thấy bất cứ điều gì để trở lại đó lên cho chắc chắn. Ai đó có thể cung cấp liên kết nói rằng, hoặc cung cấp câu trả lời thực sự ở đây? Cảm ơn!Java sử dụng để xác định xem khóa có phải là bản sao trong Bản đồ không?
Trả lời
Giao diện Map
chỉ định rằng nếu hai khóa là null
chúng là các từ khóa trùng lặp, nếu không, nếu có phím k
sao cho key.equals(k)
thì có một bản sao. Xem chứa hoặc có được phương pháp ở đây:
http://java.sun.com/javase/6/docs/api/java/util/Map.html#containsKey(java.lang.Object)
Tuy nhiên, nó tùy thuộc vào việc thực hiện Map
thế nào để đi về việc thực hiện kiểm tra đó, và một HashMap
sẽ sử dụng một mã băm để thu hẹp các phím tiềm năng nó sẽ kiểm tra với phương thức equals
. Vì vậy, trong thực tế, đối với một bản đồ băm điển hình, để kiểm tra bản sao, bản đồ sẽ lấy mã băm (có thể là mod một số kích thước) và sử dụng equals
để so sánh với bất kỳ khóa nào có mã băm mod cùng kích thước cho phần còn lại.
Sử dụng phương thức equals() trên khóa. Phương thức hashCode() chỉ giúp lưu trữ các khóa một cách hiệu quả cho bản đồ.
Đọc câu hỏi sai, nhưng câu trả lời của người trên là đúng và liên kết của tôi cung cấp câu trả lời về cách xác định câu hỏi (phương thức bằng). Xem xét các phương thức chứa và nhận trong liên kết.
Cách chèn bản đồ: Không thể có khóa trùng lặp trong Bản đồ. Nó sẽ thay thế giá trị cũ bằng giá trị mới nếu bạn tìm thấy khóa trùng lặp. Đây là link cho Giao diện bản đồ. Ngoài ra, nếu bạn nhìn vào phương thức put (K key, V value), nó cũng giải thích cách một bản đồ hoạt động. Hy vọng rằng sẽ giúp.
Tôi giả sử bạn đang đề cập đến java.util.Map
, là giao diện được cung cấp trong thư viện Java chuẩn. Phương pháp xác định nếu một khóa là trùng lặp được để lại cho việc thực hiện cụ thể. Ví dụ: java.util.HashMap
sử dụng equals
và hashCode
. Bạn có thể viết bản đồ thực hiện Bản đồ của riêng bạn sử dụng một cái gì đó hoàn toàn khác.
Cẩn thận với vỏ cạnh ở đây. Phím không phải lúc nào cũng trùng lặp. Trong thực tế, các phím null hóa ra là gây ra nhiều thất vọng giữa việc triển khai Bản đồ (xem bài viết của tôi trên Consistency).
Ví dụ: các phím null là OK trong HashMaps, nhưng không phải trong TreeMap sử dụng thứ tự tự nhiên, hoặc ConccurentHashMap trong đó các phím null bị cấm. Vấn đề ở đây là chúng ném các ngoại lệ chưa được khai thác trên nhiều phương thức của chúng nếu bạn sử dụng một khóa rỗng và giới thiệu các lỗi thời gian chạy đáng sợ khi bạn chuyển đổi các triển khai trong khi tái cấu trúc.
- 1. Tôi có thể xác định bản đồ có khóa là cấu trúc không?
- 2. Sử dụng bản đồ google không có Khóa API?
- 3. Làm cách nào để xác định xem một khóa cụ thể có phải là duy nhất trong multimap không?
- 4. bản sao nông của một bản đồ trong Java
- 5. Sử dụng javascript để xác định xem trang ASP.NET có phải là postback
- 6. Phiên bản. "Không phải là bản sao làm việc"
- 7. Tại sao vector nhanh hơn bản đồ trong một thử nghiệm, nhưng không phải là bản đồ kia?
- 8. Tránh lưu trữ bản sao khóa bản đồ
- 9. trong perl (v5.14.2), tại sao bản đồ {+0,0}() chính xác nhưng bản đồ {0,0}() thì không?
- 10. Tại sao bản đồ google sử dụng Canvas để đo khoảng cách chứ không phải SVG?
- 11. Tại sao java.util.Properties thực hiện Bản đồ <Object, Object> và không phải Bản đồ <String, String>
- 12. Có cần phải đặt mẫu vào bản đồ để sử dụng lại trong Go không?
- 13. Tại sao 'này' từ khóa không phải là một kiểu tham chiếu trong C++ Bản sao
- 14. Bản đồ <?, ?> có nghĩa là gì trong Java?
- 15. Xác định xem thiết bị có phải là Kindle
- 16. Mô hình xem bản đồ để xác nhận KnockoutJS
- 17. Xác định xem cổng có đang được sử dụng không?
- 18. chính xác thứ nguyên bản đồ trong bản đồ đa chiều là gì?
- 19. Bản đồ Java tương đương trong C#
- 20. Cách kiểm tra xem khóa hoặc giá trị có tồn tại trong Bản đồ không?
- 21. Xác định xem ứng dụng android có phải là lần đầu tiên sử dụng
- 22. Cách xác định xem ứng dụng có phải là ứng dụng web hay không
- 23. Có bản đồ có độ dài khóa biến đổi trong thế giới Java không?
- 24. Làm cách nào để xác thực xem chuỗi có phải là biến java hợp lệ không?
- 25. Tôi có nên sử dụng GeoDjango để lập bản đồ sơ đồ mặt bằng không?
- 26. Xác định xem loại có phải là số
- 27. Loại tham chiếu có thể được sử dụng làm loại khóa trong bản đồ STL
- 28. Sử dụng bản sao svn là gì?
- 29. Cách xác định xem EXE có phải là WPF
- 30. Cách dễ dàng để xác định xem biểu đồ có phải là biểu đồ con của một số biểu đồ khác không?
Cảm ơn bạn đã giải thích nó tốt hơn nhiều so với tôi :) – kevindaub