2012-05-03 46 views
5

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?

+0

Way để có được một câu trả lời xiên! – chiliNUT

Trả lời

11

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.

4

Map là dành cho Key:Value loại dữ liệu đôi. Ví dụ: nếu bạn muốn ánh xạ số cuộn học sinh vào tên của chúng.

List là bộ sưu tập các phần tử được sắp xếp đơn giản cho phép các bản sao. Ví dụ: để thể hiện danh sách tên học sinh.

0

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ị.

1

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.

1

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 HashMaplinked list

+0

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 đó. –

+0

@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

1

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.

0
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))

Các vấn đề liên quan