1 klasaArrayList
Dzisiaj będziemy uczyć się z klasą ArrayList
. Jest to pierwsza klasa tzw. kolekcji . Kolekcje w Javie są tak obszerną i użyteczną rzeczą, że jest jej poświęcona cała misja na CodeGym.
Aby w pełni zrozumieć, jak działają kolekcje i jak one działają, musisz najpierw poznać OOP, interfejsy, dziedziczenie, podstawy wielowątkowości i nie tylko.
Dlatego dzisiaj zapoznamy się z najprostszą kolekcją. Ale na wystarczająco głębokim poziomie, aby zrozumieć, jak go używać i jak to działa. Więc poznaj: kolekcjaArrayList
.
tło
Zacznę od małego tła. Programistom bardzo nie spodobała się jedna właściwość tablicy - jej rozmiaru nie można zmienić. Co zrobić, jeśli potrzebujesz przechowywać jeszcze trzy elementy w tablicy, ale jest tylko jedno wolne miejsce?
Jedynym rozwiązaniem problemu braku miejsca w tablicy było utworzenie bardzo dużej tablicy, tak aby wszystkie elementy dokładnie się tam mieściły. Ale to często prowadziło do marnowania pamięci. Jeśli zwykle w tablicy były przechowywane dwa lub trzy elementy, ale istniała choćby znikoma szansa, że będzie ich 100, musieliśmy stworzyć tablicę ze 100 elementami.
A co wymyślili programiści? Napisali klasę ArrayList
(tablica-lista), która wykonywała to samo zadanie co Array
(tablica), ale mogła zmieniać jej rozmiar.
Klasa ArrayList
Sama nazwa ArrayList
pochodzi od dwóch słów: Array + List. Array
jest tablicą i List
jest listą.
Wewnątrz każdego obiektu typu ArrayList
przechowywana jest regularna tablica elementów. Kiedy czytasz elementy z ArrayList
, odczytuje je ze swojej wewnętrznej tablicy. Kiedy piszesz, zapisuje je do wewnętrznej tablicy.
W klasie ArrayList brakuje wszystkich wad, jakie mają tablice. On może:
- Przechowuj elementy określonego typu
- Dynamicznie zmieniaj rozmiar listy
- Dodaj elementy na końcu listy
- Wstaw elementy na początku iw środku listy
- Usuń elementy z dowolnego miejsca na liście
Więcej szczegółów poniżej:
2. Utwórz obiektArrayList
Aby utworzyć obiekt klasy ArrayList
, musisz napisać kod typu:
ArrayList<Тип> Nazwa = new ArrayList<Тип>();
Gdzie ArrayList
to typ/klasa kolekcji, Тип
typ elementów przechowywanych w kolekcji ArrayList
oraz Nazwa
nazwa zmiennej typu ArrayList<Тип>
.
Typ zmiennej Nazwa
jest złożony - składa się już z dwóch typów: najpierw wskazany jest typ kolekcji, aw nawiasach trójkątnych wskazany jest typ elementów, które ta kolekcja przechowuje.
Przykłady:
Kod | Opis |
---|---|
|
Lista liczb całkowitych |
|
Lista ciągów |
|
Lista liczb rzeczywistych |
Kolekcje, w przeciwieństwie do tablic, nie mogą przechowywać typów pierwotnych: tylko typy klas . Więc jeśli potrzebujesz kolekcji typu int
, zamiast tego użyj typu opakowania Integer
.
3. Operacje zArrayList
Początkowo długość nowo utworzonej listy wynosi zero: zawiera ona 0 elementów. Jeśli do listy zostanie dodany jeden element, jego długość zwiększy się o 1. Jeśli dodany element zostanie usunięty, ponownie zmniejszy się do zera.
Możesz dowiedzieć się więcej o metodach klas ArrayList
z tabeli:
Metody | Opis |
---|---|
|
Dodaje podany element do listy |
|
Dodaje element do określonej lokalizacji na liście. |
|
Zwraca element, który znajduje się pod numeremindex |
|
Zmienia wartość elementu o numerze index navalue |
|
Usuwa element o numerze index . Zwraca usunięty element. |
|
Usuwa element: musisz przekazać sam element do listy. Jeśli takich elementów jest więcej, pierwszy z nich zostanie usunięty. |
|
Czyści listę - usuwa wszystkie elementy z listy. |
|
Sprawdza, czy lista zawiera element value . |
|
Sprawdza, czy lista jest pusta, czy nie. Czy długość listy wynosi zero. |
|
Zwraca rozmiar listy — liczbę elementów na liście. |
|
Zwraca tablicę zawierającą te same elementy co lista. Tablica musi zostać przekazana do metody. |
Metody te pozwalają na wykonanie niemal wszystkich możliwych operacji na liście: zamiana elementów, dodawanie elementów, usuwanie elementów. Możesz nawet wyczyścić listę za pomocą jednego polecenia lub przekonwertować listę na tablicę.
4. Porównanie ArrayList
iArray
Myślę, że nie możemy obejść się bez porównania ArrayList
i tablicy.
W rzeczywistości tablica ma tylko 4 akcje:
- Tworzenie tablicy
- Pobieranie elementu według numeru
- Ustawienie elementu według numeru
- Pobieranie długości tablicy
Oto analogi tych operacji w tablicy iw ArrayList
:
szyk | lista tablic |
---|---|
|
|
|
|
|
|
|
|
Porównajmy pracę ArrayList
z pracą tablicy. Dla przykładu rozwiążmy następujący problem: „wprowadź 10 linii z klawiatury i wyświetl je na ekranie w odwrotnej kolejności”
Korzystanie z tablicy (tablica) | Korzystanie z ArrayList |
---|---|
|
|
W zasadzie można wyciągnąć wyraźną analogię. A w tablicy wszystko jest nawet jakoś krótsze i wyraźniejsze czy coś. Ale nie jest to ArrayList
też bardzo trudne: pobieranie elementu to metoda get()
, zmiana elementu to metoda set()
, pobieranie długości listy to metoda size()
.
Dlaczego więc programiści używają klasy ArrayList
?
Oczywiście chodzi o inne metody, których tablica nie ma i nie będzie miała:
- Dodanie elementu do listy
- Wstawianie elementu w środku listy
- Znajdowanie elementu na liście
- Usuwanie elementu z listy
GO TO FULL VERSION