• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

ArrayList czy LinkedList

VPS Starter Arubacloud
0 głosów
2,381 wizyt
pytanie zadane 15 września 2016 w Java przez Tadeusz Jasińska Nowicjusz (190 p.)
Hej, nie mogę znaleźć informacji o tym jaka Lista tworzy się gdy używam metody toList dla tablicy.

LinkedList czy ArrayList

 

Chodzi mi o język Java

3 odpowiedzi

+1 głos
odpowiedź 16 września 2016 przez qwaler Nowicjusz (160 p.)

Chodzi Ci o metodę asList w klasie Arrays?

Zgodnie z kodem klasy Arrays:

    @SafeVarargs
    @SuppressWarnings("varargs")
    public static <T> List<T> asList(T... a) {
        return new ArrayList<>(a);
    }

Jak widać powyżej, metoda zwraca instancję interfejsu List, jednak występuje tutaj rzutowanie z klasy ArrayList. Można łatwo zrzutować taką listę spowrotem na ArrayList

ArrayList<String> foo = (ArrayList<String>) Arrays.asList("foo", "bar");

0 głosów
odpowiedź 16 września 2016 przez Porcupine Nałogowiec (31,560 p.)

https://docs.oracle.com/javase/8/docs/api/java/util/stream/Collectors.html#toList--

There are no guarantees on the type, mutability, serializability, or thread-safety of the List returned

Wniosek? Z reguły raczej ArrayList(), ale nie ma gwarancji, że w jakiejś sytuacji Java nie stwierdzi, że lepiej zoptymalizować i zwrócić coś innego. Tak samo nie ma gwarancji, że w przyszłych wersjach Javy zwracana implementacja listy będzie taki sama. 

Jeśli chodziło Ci o asList to już ktoś odpowiedział, ale ogólnie pamiętaj, że najpewniej i najlepiej po prostu spojrzeć na oficjalną dokumentacje.

–1 głos
odpowiedź 15 września 2016 przez MichuDev Pasjonat (20,300 p.)

Obie są elementami frameworku Collections (wbudowanego w Javę).

  • ArrayList to tablica dynamiczna (wstawianie jest szybkie pod warunkiem, że nie trzeba ponownie tworzyć tablicy), pobieranie wartości jest zawsze w czasie stałym.
  • LinkedList to lista składająca się z elementów, które posiadają referencje do następnych elementów. Wstawianie jest operacją o złożoności liniowej, jak również pobieranie.

Raczej najlepszym pomysłem będzie testowanie na dużych zestawach danych przy dodawaniu elementów, pobieraniu usuwaniu itp, wraz z liczeniem czasu każdej operacji. W ten sposób sam dostrzeżesz kiedy warto użyć jeden, a kiedy durgi. Częściej spotkasz się z ArrayList niż z LinkedList.

Jeśli nie wiesz jaki typ coś reprezentuje warto użyć metody getClass() zdefiniowanej w klasie Object (czyli dostępnej dla wszystkich typów oprócz typów prymitywnych). Z obiektu klasy możemy pobrać nazwę, metody, pola, klasę nadrzędną, interfejsy, adnotacje...

String nazwaKlasy = obiekt.getClass().getName(); // obiekt zamien na nazwę obiektu w kodzie

Kod jest napisany po polsku by każdy go zrozumiał. Nie róbcie tego w domu, pracy, szkole ;)

komentarz 16 września 2016 przez Porcupine Nałogowiec (31,560 p.)
Spoko odpowiedź, tylko połowa z niej nie ma za wiele wspólnego z treścią pytania :D

Podobne pytania

+1 głos
1 odpowiedź 508 wizyt
0 głosów
1 odpowiedź 218 wizyt
pytanie zadane 24 marca 2021 w Java przez niezalogowany
0 głosów
2 odpowiedzi 157 wizyt
pytanie zadane 27 lutego 2021 w Java przez napoludniestad.pl Użytkownik (960 p.)

92,454 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...