Khi LinkedHashMap.keySet() được gọi, thứ tự của Set được trả về có giống như thứ tự các phím được thêm vào không?LinkedHashMap của Java có duy trì thứ tự các khóa không?
Trả lời
Có.
Xem: LinkedHashMap:
danh sách liên kết này quy định lặp đặt hàng, đó là bình thường thứ tự trong đó phím đã được đưa vào bản đồ (chèn theo đơn đặt hàng).
và từ các tài liệu HashMap#keySet:
Tập [trả lại] được hỗ trợ bởi bản đồ, vì vậy thay đổi bản đồ được phản ánh trong tập, và ngược lại.
@Tôi cảm ơn, tôi vẫn chưa tin rằng điều này là rõ ràng. Tại sao LinkedHashMap.keySet() không trả về một lớp con của Set với thứ tự cố định? – Armand
Bởi vì nếu nó trả về một SortedSet, sau đó LinkedHashMap sẽ thêm yêu cầu rằng các khóa của nó là một loại thực hiện Comparable, hoặc một hàm so sánh được cung cấp. Đây không phải là yêu cầu của Bản đồ. Kiểm tra tài liệu SortedSet: http://download.oracle.com/javase/6/docs/api/java/util/SortedSet.html. Không có yêu cầu này cho phép ngay cả các phím không thực hiện Comparable được sử dụng trong LinkedHashMap, đó là trường hợp tổng quát hơn. Việc thực hiện LinkedHashMap thậm chí có thể trả về một SortedSet nếu các khóa của nó là Comparable, nhưng nó đơn giản là không cần thiết. –
Tất nhiên, hợp đồng của LinkedHashMap nói rằng nó duy trì trật tự INSERTION, có thể không phải là thứ tự TỰ NHIÊN. Vì vậy, trong trường hợp đó, một SortedSet sẽ không làm việc ở tất cả --- các phím đơn giản sẽ không được sắp xếp theo cách đó. –
Yes. Trường hợp ngoại lệ là khi một khóa được chèn lại, nó sẽ xuất hiện theo thứ tự mà nó được chèn vào danh sách đầu tiên.
+1 Chụp tốt trên trường hợp góc đó. –
Trên thực tế, ngoại lệ là khi khóa được ** gắn lại **, không bị xóa và sử dụng lại.Trường hợp này là khi bạn gọi 'put (khóa, giá trị)' cho một khóa đã có trong bản đồ. (The javadoc giải thích điều này rõ ràng.) –
- 1. Bộ sưu tập khóa/giá trị duy trì thứ tự
- 2. Bộ sưu tập Java duy trì thứ tự chèn
- 3. Ruby duy trì thứ tự chèn Hash
- 4. Sẽ std :: multimap duy trì thứ tự chèn nếu khóa của 2 yếu tố bằng nhau?
- 5. Làm cách nào để duy trì thứ tự các khóa tôi thêm vào một băm Perl?
- 6. sử dụng boost multi_index_container để duy trì thứ tự chèn
- 7. Thứ tự của mảng liên kết của tôi có được duy trì từ PHP sang Javascript không?
- 8. cách thay đổi khóa trong một mảng trong khi vẫn duy trì thứ tự?
- 9. Khóa chính của SQL composite không có thứ tự (cặp số nguyên theo thứ tự phải là duy nhất)
- 10. Do dicts có duy trì thứ tự lặp lại nếu chúng không được sửa đổi không?
- 11. Tính duy trì của chú thích Java?
- 12. Bcp có duy trì thứ tự hàng trong khi xuất thành tệp dữ liệu không?
- 13. Bản đồ (bộ sưu tập) duy trì Thứ tự chèn trong java
- 14. Làm cách nào để hợp nhất và duy trì thứ tự hàng của một đầu vào?
- 15. duy trì các tệp web.config
- 16. Làm thế nào để duy trì thứ tự các mục được thêm vào bộ khớp jQuery?
- 17. Loại từ điển có thứ tự khóa được xác định
- 18. Có cách nào để buộc cmdlet powershell -Export-CSV duy trì thứ tự cột cụ thể không?
- 19. Liệu entrySet() trong LinkedHashMap có đảm bảo trật tự không?
- 20. Có cấu trúc dữ liệu không cho phép trùng lặp và cũng duy trì thứ tự nhập không?
- 21. Tương đương với LinkedHashMap trong Python
- 22. Django-Tagging có được duy trì không?
- 23. Thứ tự chú thích Java có liên tục không?
- 24. Trì hoãn nhưng không tắt tự động khóa iPhone
- 25. Việc tuần tự hóa có duy trì nhận dạng đối tượng không?
- 26. Mã scala có thể duy trì được không?
- 27. LinkedHashMap vấn đề trật tự
- 28. Không duy trì tải lên Hackage
- 29. Thứ tự của các phần tử trong danh sách JSON có được giữ nguyên không?
- 30. Thứ tự mã Java của thứ tự này và các thông số trên ngăn xếp
Đối với những người đến từ PHP, hãy để tôi giúp họ bằng cách chỉ ra rằng LinkedHashMap hoạt động rất giống một mảng PHP. –