Trong java, Danh sách và Bản đồ đang sử dụng trong bộ sưu tập. Nhưng tôi không thể hiểu được tình huống nào chúng ta nên sử dụng Danh sách và thời gian nào sử dụng Bản đồ. Sự khác nhau chính giữa hai người trong số họ là gì?Danh sách khác với bản đồ như thế nào?
Trả lời
Bây giờ sẽ là một thời điểm tốt để đọc Java collections tutorial - nhưng về cơ bản, một danh sách là một chuỗi các lệnh của các yếu tố mà bạn có thể truy cập bằng cách chỉ số, và một bản đồ là một thường có thứ tự ánh xạ từ chìa khóa để các giá trị. (Một số bản đồ lưu giữ thứ tự chèn, nhưng đó là cách thực hiện cụ thể.)
Đó là thường hiển nhiên khi bạn muốn ánh xạ khóa/giá trị và khi bạn chỉ muốn một tập hợp các phần tử. Nó trở nên ít rõ ràng hơn nếu khóa là một phần của giá trị, nhưng bạn muốn có thể nhận được một mục theo khóa đó một cách hiệu quả. Đó vẫn là trường hợp sử dụng tốt cho bản đồ, mặc dù trong một số có nghĩa là bạn không có bộ sưu tập khóa riêng.
Ngoài ra còn có Set
, bộ sưu tập gồm riêng biệt.
List
chỉ là một tập hợp được sắp xếp (một chuỗi). Kiểm tra điều này list documentation.Bạn có thể truy cập các yếu tố theo chỉ số nguyên của chúng (vị trí trong danh sách) và tìm kiếm các phần tử trong danh sách. Danh sách cũng cho phép các phần tử trùng lặp và nhiều phần tử NULL.
Map
là một đối tượng ánh xạ giá trị cho các phím. Kiểm tra số map documentation này. Bản đồ không thể chứa các khóa trùng lặp; mỗi khóa có thể ánh xạ tới nhiều nhất một giá trị.
Giao diện bản đồ Bản đồ quan tâm đến số nhận dạng duy nhất. Bạn ánh xạ khóa duy nhất (ID) tới giá trị cụ thể, trong đó cả khóa và giá trị đều là đối tượng. Việc triển khai Bản đồ cho phép bạn thực hiện những việc như tìm kiếm giá trị dựa trên khóa, yêu cầu chỉ tập hợp các giá trị hoặc yêu cầu bộ sưu tập chỉ là các phím. Giống như Sets, Maps dựa trên phương thức equals() để xác định xem hai phím giống nhau hay khác nhau.
Giao diện danh sách Danh sách quan tâm đến chỉ mục. Một điều mà Danh sách có các danh sách không có là một tập hợp các phương pháp có liên quan đến chỉ mục. Những phương thức chính bao gồm những thứ như get (int index), indexOf (Object o), thêm (int index, Object obj), và như vậy trên. Tất cả ba triển khai Danh sách được sắp xếp theo vị trí chỉ mục — một vị trí mà bạn xác định bằng cách đặt đối tượng tại chỉ mục cụ thể hoặc bằng cách thêm đối tượng đó mà không cần xác định vị trí, trong trường hợp đó đối tượng được thêm vào cuối.
danh sách là một danh sách được liên kết, trong đó mọi đối tượng được kết nối với một đối tượng tiếp theo thông qua con trỏ. thời gian cần để chèn một đối tượng mới vào danh sách là O (1) nhưng phần còn lại của các thao tác trên nó mất nhiều thời gian hơn.
điều tốt về nó là nó lấy chính xác lượng bộ nhớ bạn cần và thậm chí không nhiều hơn byte.
Bản đồ là cấu trúc dữ liệu có một mảng và mỗi mục nhập vào mảng được tính bằng hashFunction(key)
để tính toán vị trí theo khóa. hầu như mọi thao tác trong một Map taks O (1) (ngoại trừ chèn khi có 2 khóa giống nhau) nhưng độ phức tạp của không gian là khá lớn.
để biết thêm đọc thử wikipedia của HashMap và linked list
HashMap và LinkedList là các triển khai của giao diện Bản đồ và Danh sách, chúng chỉ là một trường hợp cụ thể của các bộ sưu tập đó. –
@GuillaumePolet, bạn đúng, nhưng ý tưởng là điều quan trọng. sự hiểu biết sự khác biệt giữa hashmap và linkedlist là cơ sở của understanfing sự khác biệt giữa MAP và LIST – thepoosh
HashList là một cấu trúc dữ liệu lưu trữ các đối tượng trong một bảng băm và một list.it là sự kết hợp của hashmap và danh sách gấp đôi được liên kết. acess sẽ nhanh hơn. HashMap là thực hiện bảng băm của giao diện bản đồ nó giống như HashTable ngoại trừ việc nó không đồng bộ và cho phép các giá trị null. Danh sách là một bộ sưu tập được sắp xếp và nó cho phép null và trùng lặp trong đó. acess vị trí là có thể. Set là một bộ sưu tập không cho phép trùng lặp, nó có thể cho phép nhiều nhất một phần tử null. giống như bộ toán học của chúng tôi.
List - This datastructure is used to contain list of elements.
In case you need list of elements and the list may contain duplicate values,
then you have to use List.
Map - It contains data as key value pair. When you have to store data
in key value pair,so that latter you can retrieve data using the key,
you have to use Map data structure.
Danh sách thi - ArrayList, LinkedList
Bản đồ thực hiện - HashMap, TreeMap
So HashMap
để ArrayList
- Một bản đồ băm là cấu trúc dữ liệu nhanh nhất nếu bạn muốn có được tất cả các nút cho một trang. Danh sách các nút có thể được tìm nạp trong thời gian không đổi (O (1)) trong khi với danh sách thời gian là O (n) (n = số trang, nhanh hơn trên danh sách được sắp xếp nhưng không bao giờ đến gần O (1))
- 1. Python Bản đồ Danh sách Strings để Integer Danh sách
- 2. MapLike của Scala, ListLike, SeqLike, v.v ... mỗi lần so sánh với Bản đồ, Danh sách, Seq như thế nào?
- 3. Android - scrollview thích Foursquare với bản đồ + danh sách
- 4. Chuyển đổi danh sách của Scala vào bản đồ với indicies như phím
- 5. Cách trừ một danh sách các phím bản đồ từ một bản đồ khác và lấy bản đồ mới (bản đồ A - mab B = bản đồ C)
- 6. Danh sách 3 chiều hoặc Bản đồ
- 7. JAXB marshaling Bản đồ Danh sách
- 8. Danh sách so với Bản đồ trong Java
- 9. Làm thế nào để transpose một bản đồ với giá trị danh sách trong Scala
- 10. Danh sách bản đồ vào từ điển
- 11. Lập bản đồ Danh sách các đối tượng với Dozer
- 12. Lập bản đồ trên các danh sách con trong Scala
- 13. Tôi có thể "chuyển đổi" danh sách bản đồ thành bản đồ danh sách trong Clojure không?
- 14. Python: danh sách bộ lọc danh sách với một danh sách khác
- 15. Làm thế nào tôi có thể hợp nhất hai bản đồ trên cùng một danh sách?
- 16. Chuyển đổi Bản đồ Scala thành Danh sách
- 17. Danh sách đệ quy này làm phẳng như thế nào?
- 18. bộ lọc bản đồ vs danh sách hiểu
- 19. cách sử dụng danh sách erlang: chức năng bản đồ
- 20. Bản đồ một danh sách các chuỗi với JPA/Hibernate chú thích
- 21. Engine.io khác với socket.io như thế nào?
- 22. Sử dụng bản đồ với hai danh sách thay vì một danh sách. Bạn có thể làm tổ không?
- 23. Java: Cách chuyển đổi Danh sách thành Bản đồ
- 24. Làm thế nào để thực hiện cập nhật hàng loạt trong mùa xuân với một danh sách các bản đồ?
- 25. Lập bản đồ danh sách các đối tượng lớn thành một danh sách PagedList của ViewModels
- 26. Bản đồ băm JavaScript được triển khai như thế nào?
- 27. Fortran deallocate danh sách liên kết như thế nào?
- 28. Danh sách Liên kết XOR hoạt động như thế nào?
- 29. Kích thước danh sách Java() hoạt động như thế nào?
- 30. gửi Danh sách/Bản đồ làm thông số POST jersey
Way để có được một câu trả lời xiên! – chiliNUT