Đối với LinkedHashMap, câu trả lời là khá rõ ràng rằng nó giữ gìn trật tự của chèn.
Nhưng đối với ListMap, có vẻ như có một số nhầm lẫn ở đây.
Thứ nhất, có hai ListMap.
- scala.collection.mutable.ListMap
- scala.collection.immutable.ListMap.
Thứ hai, tài liệu cho ListMap có điều gì đó sai trái như tôi đã thử.
mutable.ListMap
Trình tự thực tế không phải là thứ tự chèn như nó nói.
Và nó cũng không phải là thứ tự đảo ngược của chèn. Kết quả tôi đã thử là [ra, thứ hai, thứ nhất, thứ ba]
Một bản đồ có thể thay đổi đơn giản được hỗ trợ bởi danh sách, do đó, nó duy trì thứ tự chèn.
immutable.ListMap
Khi tài liệu nói rằng, thứ tự là thứ tự chèn.
Một điều cần chú ý là nó được lưu trữ nội bộ theo thứ tự chèn ngược. Và thứ tự được lưu trữ nội bộ và thứ tự chuyển đổi/truyền tải là hai thứ. Thứ tự được lưu trữ bên trong quyết định độ phức tạp của các phương thức tra cứu như đầu/cuối/đuôi/init /.
Lớp này triển khai bản đồ không thay đổi bằng cấu trúc dữ liệu dựa trên danh sách. Liệt kê các trình vòng lặp bản đồ và các phương thức truyền tải truy cập các cặp khóa-giá trị trong lần đầu tiên whey được chèn vào.
Mục nhập được lưu trữ nội bộ theo thứ tự chèn ngược, có nghĩa là khóa mới nhất nằm ở đầu danh sách.
chỉ cần lưu ý, tôi không khuyên bạn nên sử dụng các lớp ListMap của scala nói chung. Chúng có độ phức tạp thời gian tuyến tính cho hầu hết các hoạt động. Vì vậy, trừ khi bản đồ của bạn là nhỏ, logic sử dụng listmaps sẽ thực sự kéo. http://docs.scala-lang.org/overviews/collections/performance-characteristics.html –