2011-04-24 78 views
29

Khi tiêu đề cho biết tôi đã tự hỏi độ phức tạp của phương thức contains() của ArrayList là gì.Độ phức tạp về thời gian chứa (Object o), trong ArrayList của các đối tượng

+4

Nếu bạn muốn tra cứu nhanh hơn (với chi phí sử dụng bộ nhớ lớn hơn), và danh sách của bạn không có các yếu tố trùng lặp (từ quan điểm của 'equals' và 'hashCode'), bạn có thể sử dụng 'LinkedHashSet'. –

+0

Điều đó thực sự có thể là trường hợp của tôi, cảm ơn bạn :) – Samuel

+0

Nó sẽ nhanh hơn nếu ArrayList được sắp xếp? – Roberto

Trả lời

38
O(n) 

Các size, isEmpty, get, set, iterator, và listIterator hoạt động chạy trong thời gian không đổi. Hoạt động add chạy trong thời gian không đổi hằng số, nghĩa là thêm các phần tử n yêu cầu thời gian O (n). Tất cả các hoạt động khác chạy trong thời gian tuyến tính (gần như nói). Các yếu tố không đổi là thấp so với điều đó cho việc thực hiện LinkedList.

http://download.oracle.com/javase/6/docs/api/java/util/ArrayList.html

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