Zawsze byłem jednym z tych, którzy po prostu używają:
List<String> names = new ArrayList<>();
Używam interfejsu jako nazwy typu dla portability, tak że kiedy zadaję pytania takie jak te, mogę przerobić mój kod.
Kiedy należy używać LinkedList
zamiast ArrayList
i odwrotnie?
To jest pytanie o wydajność. LinkedListjest szybki w dodawaniu i usuwaniu elementów, ale powolny w dostępie do konkretnego elementu.
ArrayList` jest szybki w dostępie do konkretnego elementu, ale może być powolny w dodawaniu na obu końcach, a szczególnie powolny w usuwaniu w środku.
Array vs ArrayList vs LinkedList vs Vector jest bardziej dogłębny, podobnie jak Linked List.
ArrayList
jest losowo dostępny, podczas gdy LinkedList
jest naprawdę tani do rozszerzania i usuwania elementów. Dla większości przypadków, ArrayList
jest w porządku.
O ile nie tworzyłeś dużych list i nie mierzyłeś wąskiego gardła, prawdopodobnie nigdy nie będziesz musiał się martwić o różnicę.
To zależy od tego, jakie operacje będziesz wykonywał na Liście.
ArrayList
jest szybszy w dostępie do indeksowanej wartości. Znacznie gorzej jest przy wstawianiu lub usuwaniu obiektów.
Aby dowiedzieć się więcej, przeczytaj dowolny artykuł, który mówi o różnicy między tablicami i połączonymi listami.