6

Oczywiście, wiem o różnicy wydajności między arraylist i linklist. Sam wykonałem testy i dostrzegłem ogromną różnicę w czasie i pamięci dla wstawiania/usuwania i iteracji między listą układów i listą odnośników dla bardzo dużej listy.Korzyści z "obu" listy tablic i powiązanych list ... możliwe w java?

(poprawcie mnie jeśli się mylę) Zazwyczaj wolą ArrayList nad LinkedList ponieważ:

1) My praktycznie zrobić iteracji częściej niż wstawiania/usuwania. Dlatego wolimy, aby iteracje były szybsze niż wstawianie/usuwanie.

2) Narzut pamięci LinkedList to znacznie więcej niż arraylist

3), nie ma sposobu, w jaki można utworzyć listę jak LinkedList podczas wkładania/usuwania w partii, jak i arraylist podczas iteracji. Dzieje się tak dlatego, że lista tablic i lista odnośników mają zasadniczo różne techniki przechowywania danych.

Czy mam rację co do trzeciego punktu [mam nadzieję, że tak :)]? Czy istnieje możliwość uzyskania korzyści z tych dwóch struktur danych na jednej liście? Myślę, że projektanci struktury danych musieli o tym pomyśleć.

+4

Możliwy duplikat: http://stackoverflow.com/questions/1712952/is-there-a-known-implementation-of-an-indexed-linked-list – Aubin

+0

Sam to powiedziałeś, gdyby istniało bezkompromisowe rozwiązanie, które miałoby wszystkie te zalety, nikt nie wiedziałby nawet o 'ArrayList' i' LinkedList'. –

+0

@Aubin dzięki za link. +1 :) , ale jest to pytanie z 2009 roku. Jakieś ulepszenia w dziedzinie struktur danych w ciągu ostatnich 3 lat? Zwłaszcza po wydaniu Java 7? –

Odpowiedz

1

Jeśli szukasz bardziej wydajnych wdrożeń kolekcji, sprawdź Javolution. Ten pakiet zapewnia FastList i FastTable, co może przynajmniej zmniejszyć koszt wyboru między listami połączonymi i listami macierzy.