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

ArrayList czy LinkedList

Object Storage Arubacloud
0 głosów
2,387 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ź 529 wizyt
0 głosów
1 odpowiedź 223 wizyt
pytanie zadane 24 marca 2021 w Java przez niezalogowany
0 głosów
2 odpowiedzi 159 wizyt
pytanie zadane 27 lutego 2021 w Java przez napoludniestad.pl Użytkownik (960 p.)

92,552 zapytań

141,399 odpowiedzi

319,534 komentarzy

61,938 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...