Danh sách đại diện cho thứ tự tuần tự của các phần tử. Bản đồ được sử dụng để đại diện cho tập hợp các cặp khóa/giá trị.
Trong khi bạn có thể sử dụng bản đồ làm danh sách, có một số nhược điểm nhất định khi làm như vậy.
Duy trì trật tự: - Danh sách theo định nghĩa được sắp xếp. Bạn thêm các mục và sau đó bạn có thể lặp lại thông qua danh sách theo thứ tự mà bạn đã chèn các mục. Khi bạn thêm các mục vào một HashMap, bạn không được bảo đảm lấy các mục theo thứ tự bạn đặt chúng vào. Có các lớp con của HashMap như LinkedHashMap sẽ duy trì thứ tự, nhưng theo thứ tự chung không được bảo đảm với Bản đồ.
Ngữ nghĩa khóa/giá trị: - Mục đích của bản đồ là lưu trữ các mục dựa trên khóa có thể được sử dụng để truy xuất mục sau này. Chức năng tương tự chỉ có thể đạt được với một danh sách trong trường hợp giới hạn trong đó khóa xuất hiện là vị trí trong danh sách.
Khả năng đọc mã Hãy xem xét các ví dụ sau.
// Adding to a List
list.add(myObject); // adds to the end of the list
map.put(myKey, myObject); // sure, you can do this, but what is myKey?
map.put("1", myObject); // you could use the position as a key but why?
// Iterating through the items
for (Object o : myList) // nice and easy
for (Object o : myMap.values()) // more code and the order is not guaranteed
chức năng Bộ sưu tập Một số chức năng tiện ích tuyệt vời có sẵn cho các danh sách thông qua các lớp Collections. Ví dụ ...
// Randomize the list
Collections.shuffle(myList);
// Sort the list
Collections.sort(myList, myComparator);
Hope this helps,
'Lists' và' Maps' hai * hoàn toàn * cấu trúc dữ liệu khác nhau, với các hoạt động khác nhau và bất biến. Bạn có thể giải thích bối cảnh/yêu cầu mà bạn đang nghĩ đến nơi cả hai sẽ là giải pháp được chấp nhận? –
Dường như bạn chưa bao giờ cần giữ một bộ thứ gì đó * theo một thứ tự cụ thể * ... –
Downvote, tại sao? Tôi nghĩ đây là một câu hỏi thích hợp. Cho thấy thiếu kiến thức mặc dù, nhưng trên SO câu hỏi không nên được downvoted cho thấy thiếu kiến thức. Trong thực tế, một câu hỏi luôn là kết quả của việc thiếu kiến thức. –