6

Tất nhiên, tôi biết về sự khác biệt hiệu suất giữa arraylist và linkedlist. Tôi đã chạy thử nghiệm bản thân mình và thấy sự khác biệt rất lớn trong thời gian và bộ nhớ cho chèn/xóa và lặp lại giữa arraylist và linkedlist cho một danh sách rất lớn.Lợi ích của "cả hai" arraylist và linkedlist ... có thể trong java?

(Đúng tôi nếu tôi đã sai lầm) Chúng tôi thường thích ArrayList trên linkedlist vì:

1) Chúng ta thực tế làm lặp thường xuyên hơn chèn/xóa. Vì vậy, chúng tôi thích lặp lại để nhanh hơn chèn/xóa.

2) Bộ nhớ overhead của linkedlist là nhiều hơn so với ArrayList

3) Không có cách nào mà chúng ta có thể định nghĩa một danh sách như linkedlist khi chèn/xóa trong hàng loạt, và như ArrayList trong khi lặp lại. Đó là bởi vì arraylist và linkedlist có các kỹ thuật lưu trữ dữ liệu khác nhau về cơ bản.

Tôi có sai về điểm thứ 3 [Tôi hy vọng vậy :)] không? Có khả năng nào có lợi ích của hai cấu trúc dữ liệu này trong một danh sách không? Tôi đoán, các nhà thiết kế cấu trúc dữ liệu phải nghĩ về nó.

+4

Có thể trùng lặp: http://stackoverflow.com/questions/1712952/is-there-a-known-implementation-of-an-indexed-linked-list – Aubin

+0

Bạn đã tự mình nói, nếu có một giải pháp không thỏa hiệp có tất cả những lợi ích đó, không ai thậm chí còn biết về 'ArrayList' và 'LinkedList'. –

+0

@Aubin cảm ơn vì liên kết. +1 :) nhưng câu hỏi năm 2009 của nó. Bất kỳ cải tiến nào trong lĩnh vực cấu trúc dữ liệu trong 3 năm qua? Đặc biệt là sau khi phát hành Java 7? –

Trả lời

1

Nếu bạn đang tìm kiếm một số triển khai bộ sưu tập có hiệu suất cao hơn, hãy xem Javolution. Gói đó cung cấp FastListFastTable mà ít nhất có thể giảm chi phí lựa chọn giữa danh sách được liên kết và danh sách mảng.