Java List – W Javie możemy znaleźć specjalny framework oferujący nam szereg, różnych kolekcji. Można powiedzieć, że kolekcje są dość wypasioną konkurencją tablic. Z tablicami to trochę jak z taką oldschoolową lodziarnią 🍦🍦 – wchodzisz a tam dwa rodzaje lodów i tyle – tak samo z tablicami – jedno oraz wielowymiarowe i tyle. Kolekcje natomiast to już zupełnie inny poziom – nowa super lodziarnia z mnóstwem ilości smaków 🍦🍦🍨🍨. Który wybrać? No właśnie, zanim sięgniesz po którąś kolekcje, warto najpierw dobrze zrozumieć ich działanie, żeby dokonać odpowiedniego, w zależności od potrzeb, wyboru.
W tym materiale przedstawię Ci Interfejs List i jego najpopularniejsze pod klasy – ArrayList i LinkedList. Dowiesz się, co charakteryzuję listę.
Spis treści
- 1 Java – List – ArrayList – LinkedList – wprowadzenie
- 2 Java Collection
- 3 Java List | ArrayList | LinkedList
- 4 Java ArrayList
- 5 Java LinkedList
- 6 Java LinkedList vs. ArrayList
- 7 Java List of Arrays – Lista tablic
- 8 Java Sort List – Lista z posortowanymi elementami
- 9 Java – List – ArrayList – LinkedList – podsumowanie
- 10 Kierunek Java
- 11 20+ BONUSOWYCH materiałów z programowania
Java – List – ArrayList – LinkedList – wprowadzenie
Z tego materiału dowiesz się:
- Czym jest lista?
- Jakie są najpopularniejsze typy list?
- Co charakteryzuje ArrayList?
- Co charakteryzuje LinkedList?
- Co to jest lista tablic?
- Co różni ArrayList i LinkedList?
Java Collection
W ramach tego materiału zajmiemy się przede wszystkim ogólnym zagadnieniem Listy – natomiast kompletny materiał dotyczący kolekcji w Javie znajdziesz poniżej.
➡ ZOBACZ 👉: Java Collection | ArrayList, HashSet, HashMap
Java List | ArrayList | LinkedList
Lista (ang. list) to uporządkowana kolekcja, w której wartości mogą wystąpić więcej niż jeden raz. Najczęściej wykorzystywanymi typami list są:
- ArrayList,
- LinkedList.
Java ArrayList
ArrayList jest jedną z implementacji Listy zbudowanej na bazie tablicy. ArrayList’a może automatycznie dostosowywać swoją pojemność, podczas dodawania lub usuwania elementów. Stąd też ArrayList’a znana jest również jako tablica dynamiczna.
Możesz w swobodny sposób dostać się do poszczególnych elementów poprzez ich indeksy zaczynające się od zera.
ArrayList<String> animals = new ArrayList<>(); //add animals.add("Cat"); System.out.println(animals); //get String animal = animals.get(0); System.out.println(animal); //set animals.set(0,"Dog"); System.out.println(animals); //remove animals.remove(0); System.out.println(animals);
- Metoda „add” dodaje do naszej pustej ArrayListy „Cat”,
- Używając „get” otrzymujemy obiekt („Cat”) o indeksie 0,
- Metoda „set” ustawia na indeksie 0 obiekt „Dog”, który zastąpił obiekt „Cat”,
- Za pomocą „remove” usuwamy obiekt z indeksu 0, jako że był to jedyny obiekt w naszej liście, w rezultacie lista jest pusta.
Java LinkedList
LinkedList, pomimo że „z zewnątrz” może wydawać się taka sama jak ArrayList’a to pod spodem operuję na zupełnie innym mechanizmie, na tzw. węzłach (ang. node).
Węzeł składa się z adresu w pamięci (referencji) poprzedniego i następnego elementu z listy oraz danych, które przechowuje.
Dzięki temu, że klasa LinkedList oprócz interfejsu List implementuje również interfejs Queue i Deque, ma możliwość implementacji większej ilości metod niż ArrayList’a np. addFirst, addLast, getFirst, getLast. Warto zwrócić uwagę na takie metody jak:
- peek – zwraca pierwszy element tzw. głowę (ang. head) listy połączonej
- poll – zwraca i usuwa pierwszy element z listy
LinkedList<String> animals = new LinkedList<>(); animals.add("Cat"); animals.add("Dog"); System.out.println(animals); //peek String animal = animals.peek(); System.out.println(animal); //poll String removedAnimal = animals.poll(); System.out.println(removedAnimal); System.out.println(animals);
- „peek()” zwróciło 1 element z listy –„Cat”,
- „poll()” zwróciło i jednocześnie usunęło 1 element z listy –„Cat”,
- Wynikiem końcowym w liście znajduję się tylko
Java LinkedList vs. ArrayList
Niby to jest lista i to jest lista. Hmm.. Niby tak, ale warto jednak znać różnice między tymi dwoma listami, żeby wiedzieć kiedy lepiej którą stosować.
Java List of Arrays – Lista tablic
Listy mogą przechowywać tylko obiekty. Czy zatem można stworzyć listę tablic przechowująca typy proste? Oczywiście, że tak, ponieważ tablica sama w sobie jest obiektem.
ArrayList<int[]> listOfArrays = new ArrayList<>(); int[] numbers1 = {2, 3, 5, 6}; int[] numbers2 = {1, 4, 7}; int[] numbers3 = {10, 12, 7, 8, 5}; listOfArrays.add(numbers1); listOfArrays.add(numbers2); listOfArrays.add(numbers3); for (int[] listOfArray : listOfArrays) { System.out.println(Arrays.toString(listOfArray)); }
Java Sort List – Lista z posortowanymi elementami
Java nie oferuje gotowej posortowanej listy tak jak to jest w przypadku TreeSet’u. Jednak nic straconego, ponieważ mamy do dyspozycji wiele narzędzi, które w szybki sposób posortują naszą listę wedle naszych potrzeb.
List<Integer> integers = Arrays.asList(2, 4, 5, 8, 1, 3, 10);
- Metoda sort()
Interfejs List posiada metodę sortującą sort(), zaimplementowaną później m.in. w ArrayList i LinkedList. Metoda ta przyjmuję Comparator. W zależności od tego czy chcemy posortować naszą listę rosnąco lub malejąco możemy użyć:- Comparator.naturalOrder()
integers.sort(Comparator.naturalOrder()); System.out.println("Posortowana rosnąco lista: \n"); integers.forEach(System.out::println);
- Comparator.reverseOrder()
integers.sort(Comparator.reverseOrder()); System.out.println("Posortowana malejąco lista: \n"); integers.forEach(System.out::println);
- Comparator.naturalOrder()
- Collections.sort()
Java oferuje bibliotekę Collections, która posiada szereg metod pozwalających manipulować kolekcjami. Jedną z takich metod jest metoda sort(), która sortuje rosnąco.Collections.sort(integers); System.out.println("Posortowana rosnąco lista: \n"); integers.forEach(System.out::println);
Java – List – ArrayList – LinkedList – podsumowanie
W ramach tego materiału dowiedzieliśmy się, czym jest lista. Bliżej zapoznaliśmy się z rodzajami list i różnicami pomiędzy ArrayList’ą oraz LinkedList’ą. Jeżeli chcesz kontynuować swoją przygodę z Javą i poznać inne struktury, które oferuję ten język programowania – to zapraszam do zapoznania się z różnymi tematami z serii o Javie.
➡ ZOBACZ 👉: Kurs Java | Darmowy Kurs Programowania w Javie
Kierunek Java
W serii o Javie zapoznajesz się z podstawowymi tematami o Javie. Jeżeli chcesz bardziej kompleksowo zagłębić się w temat Javy, poczytać, posłuchać o Javie, to zachęcam Cię do zapoznania się z moim kursem „Kierunek Java”:
➡ ZOBACZ 👉: Kierunek Java
20+ BONUSOWYCH materiałów z programowania
e-book – „8 rzeczy, które musisz wiedzieć, żeby dostać pracę jako programista”,
e-book – „Java Cheat Sheet”,
checklista – „Pytania rekrutacyjne”
i wiele, wiele wiecej!