logo

Lista tablic w Javie

Lista tablic Java jest częścią Java ramy kolekcji i jest to klasa pakietu java.util. Zapewnia nam dynamiczne tablice w Javie. Chociaż może być wolniejszy niż standardowe tablice, ale może być pomocny w programach, w których potrzebne jest wiele manipulacji tablicą. Ta klasa znajduje się w java.util pakiet. Główny zaleta ArrayList w Javie jest tak, że jeśli zadeklarujemy tablicę, musimy podać jej rozmiar, ale w ArrayList nie ma potrzeby podawać rozmiaru ArrayList. Jeśli chcesz wspomnieć o rozmiarze, możesz to zrobić.

Spis treści

śpij dla javascript

Co to jest ArrayList w Javie?

ArrayList to klasa Java zaimplementowana przy użyciu interfejsu List. Java ArrayList, jak sama nazwa wskazuje, zapewnia funkcjonalność tablicy dynamicznej, której rozmiar nie jest ustalony jako tablica. Ponadto jako część frameworka Collections ma wiele funkcji niedostępnych w przypadku tablic.



ArrayList_Java

Ilustracja:

Sprawdźmy ArrayList z typem obiektu Integer zapisanym w niej wraz z obrazem.

ArrayList_Integer_Object

Przykład Java ArrayList

Przykład 1: Poniższa implementacja pokazuje, jak utworzyć i używać ArrayList ze wzmianką o jej rozmiarze.

Jawa
// Java program to demonstrate the // working of ArrayList import java.io.*; import java.util.*; class ArrayListExample {  public static void main(String[] args)  {  // Size of the  // ArrayList  int n = 5;  // Declaring the ArrayList with  // initial size n  ArrayList arr1 = nowa lista tablic (N);  // Deklaracja ArrayList ArrayList arr2 = nowa lista tablic ();  // Drukowanie tablicy ArrayList System.out.println('Tablica 1:' + arr1);  System.out.println('Tablica 2:' + tablica2);  // Dodawanie nowych elementów na // końcu listy dla (int i = 1; i<= n; i++) {  arr1.add(i);  arr2.add(i);  }  // Printing the ArrayList  System.out.println('Array 1:' + arr1);  System.out.println('Array 2:' + arr2);  } }>

Wyjście
Array 1:[] Array 2:[] Array 1:[1, 2, 3, 4, 5] Array 2:[1, 2, 3, 4, 5]>

Wyjaśnienie powyższego Programu:

ArrayList jest tablicą dynamiczną i podczas jej tworzenia nie musimy określać rozmiaru, rozmiar tablicy automatycznie zwiększa się w przypadku dynamicznego dodawania i usuwania elementów. Chociaż faktyczna implementacja biblioteki może być bardziej złożona, poniżej znajduje się bardzo podstawowy pomysł wyjaśniający działanie tablicy, gdy tablica się zapełni i spróbujemy dodać element:

  • Tworzy pamięć o większym rozmiarze na pamięci sterty (na przykład pamięć o podwójnym rozmiarze).
  • Kopiuje bieżące elementy pamięci do nowej pamięci.
  • Nowy element został dodany teraz, ponieważ dostępna jest teraz większa pamięć.
  • Usuń starą pamięć.

Ważne funkcje ArrayList w Javie

  • ArrayList dziedziczy Lista abstrakcyjna klasę i implementuje Interfejs listy .
  • ArrayList jest inicjowany według rozmiaru. Jednakże rozmiar jest zwiększany automatycznie, jeśli kolekcja rośnie lub zmniejsza się, jeśli obiekty są usuwane ze zbioru.
  • Java ArrayList pozwala nam na losowy dostęp do listy.
  • Nie można używać ArrayList klasa opakowania dla takich przypadków.
  • ArrayList w Javie można postrzegać jako wektor w C++ .
  • ArrayList nie jest zsynchronizowany. Jej odpowiednikiem zsynchronizowanej klasy w Javie jest Wektor .

Rozumiemy Szczegółowa lista tablic Java . Spójrz na poniższy obrazek:

List_Classes_Interfejs

Na powyższej ilustracji Lista abstrakcyjna , CopyOnWriteArrayList , I Abstrakcyjna lista sekwencyjna to klasy implementujące interfejs list. W każdej z wymienionych klas zaimplementowana jest osobna funkcjonalność. Oni są:

  1. Lista abstrakcyjna: Ta klasa służy do implementacji niemodyfikowalnej listy, dla której wystarczy rozszerzyć tę klasę AbstractList i zaimplementować tylko Dostawać() i rozmiar() metody.
  2. CopyOnWriteArrayList: Ta klasa implementuje interfejs listy. Jest to ulepszona wersja Lista tablic w którym wszystkie modyfikacje (dodawanie, ustawianie, usuwanie itp.) są realizowane poprzez utworzenie nowej kopii listy.
  3. StreszczenieLista sekwencyjna: Ta klasa implementuje Interfejs kolekcji oraz klasa AbstractCollection. Ta klasa służy do implementacji niemodyfikowalnej listy, dla której wystarczy rozszerzyć tę klasę AbstractList i zaimplementować tylko Dostawać() i rozmiar() metody.

Konstruktory w ArrayList w Javie

Aby utworzyć ArrayList, musimy utworzyć obiekt klasy ArrayList. Klasa ArrayList składa się z różnych konstruktorzy które pozwalają na ewentualne utworzenie listy tablic. Poniżej znajdują się konstruktory dostępne w tej klasie:

1. Lista tablic()

Ten konstruktor służy do tworzenia pustej listy tablic. Jeśli chcemy utworzyć pustą ArrayList o nazwie przyr , wówczas można go utworzyć jako:

ArrayList arr = new ArrayList();>

2. ArrayList (kolekcja c)

Konstruktor ten służy do budowania listy tablic inicjowanej elementami z kolekcji c. Załóżmy, że chcemy utworzyć tablicę ArrayList zawierającą elementy obecne w kolekcji c, wówczas można ją utworzyć jako:

ArrayList arr = new ArrayList(c);>

3. ArrayList (int pojemność)

Ten konstruktor służy do budowania listy tablic z określoną początkową pojemnością. Załóżmy, że chcemy utworzyć ArrayList o początkowym rozmiarze N, a następnie można ją utworzyć jako:

ArrayList arr = new ArrayList(N);>

Metody Java ArrayList

metodaOpis
add(int indeks, element obiektu) Ta metoda służy do wstawiania określonego elementu pod określonym indeksem pozycji na liście.
dodaj (obiekt o) Ta metoda służy do dołączenia określonego elementu na końcu listy.
dodaj wszystko (kolekcja C) Metoda ta służy do dołączenia wszystkich elementów określonej kolekcji na koniec wspomnianej listy, w takiej kolejności, aby wartości były zwracane przez iterator określonej kolekcji.
addAll(indeks int, kolekcja C) Służy do wstawiania wszystkich elementów z określonej kolekcji, zaczynając od określonej pozycji, na wspomnianą listę.
jasne() Ta metoda służy do usuwania wszystkich elementów z dowolnej listy.
klon() Ta metoda służy do zwracania płytkiej kopii tablicy ArrayList w Javie.
zawiera? (Obiekt o) Zwraca wartość true, jeśli ta lista zawiera określony element.
zapewnić pojemność? (int minCapacity) W razie potrzeby zwiększa pojemność tej instancji ArrayList, aby upewnić się, że może ona pomieścić co najmniej liczbę elementów określoną przez argument minimalnej pojemności.
forEach? (Działanie konsumenckie) Wykonuje daną akcję dla każdego elementu Iterable, dopóki wszystkie elementy nie zostaną przetworzone lub akcja nie zgłosi wyjątku.
dostać? (indeks int) Zwraca element na określonej pozycji na tej liście.
indeksOf(Obiekt O) Zwracany jest indeks pierwszego wystąpienia określonego elementu lub -1, jeśli elementu nie ma na liście.
jest pusty?() Zwraca wartość true, jeśli lista nie zawiera żadnych elementów.
lastIndexOf(obiekt O) Zwracany jest indeks ostatniego wystąpienia określonego elementu lub -1 w przypadku, gdy elementu nie ma na liście.
listIterator?() Zwraca iterator listy po elementach tej listy (w odpowiedniej kolejności).
listIterator?(int indeks) Zwraca iterator listy po elementach tej listy (w odpowiedniej kolejności), zaczynając od określonej pozycji na liście.
usunąć?(int indeks) Usuwa element z określonej pozycji na tej liście.
usunąć? (Obiekt o) Usuwa pierwsze wystąpienie określonego elementu z tej listy, jeśli występuje.
usunąćWszystko?(Kolekcja c) Usuwa z tej listy wszystkie jej elementy zawarte w określonej kolekcji.
usunąćIf?(Filtr predykatów) Usuwa wszystkie elementy tej kolekcji, które spełniają podany predykat.
usunąćRange?(int z indeksu, int do indeksu) Usuwa z tej listy wszystkie elementy, których indeks znajduje się pomiędzy fromIndex (włącznie) a toIndex (wyłącznie).
zachować wszystko? (Kolekcja c) Zachowuje tylko elementy z tej listy, które znajdują się w określonej kolekcji.
set?(indeks int, element E) Zastępuje element na określonej pozycji na tej liście określonym elementem.
rozmiar?() Zwraca liczbę elementów na tej liście.
rozdzielacz?() Tworzy późno wiążący i niezawodny Spliterator dla elementów na tej liście.
podlista?(int z indeksu, int do indeksu) Zwraca widok części tej listy pomiędzy określonym fromIndex (włącznie) i toIndex (wyłącznie).
do tablicy() Ta metoda służy do zwrócenia tablicy zawierającej wszystkie elementy listy we właściwej kolejności.
toArray(Obiekt[] O) Służy również do zwrócenia tablicy zawierającej wszystkie elementy na tej liście w odpowiedniej kolejności, takiej samej jak poprzednia metoda.
przytnij do rozmiaru() Ta metoda służy do przycięcia pojemności instancji ArrayList do bieżącego rozmiaru listy.

Notatka: Możesz także utworzyć ogólną ArrayList:

// Tworzenie ogólnej liczby całkowitej ArrayList
ArrayList arrli = nowa ArrayList();

Niektóre kluczowe punkty ArrayList w Javie

  1. ArrayList to podkreślona tablica o zmiennym rozmiarze lub tablica o zmiennym rozmiarze struktury danych.
  2. Duplikaty ArrayList są dozwolone.
  3. Kolejność wstawiania jest zachowana.
  4. Dozwolone są obiekty heterogeniczne.
  5. Możliwe jest wstawienie wartości null.

Zobaczmy, jak wykonać kilka podstawowych operacji na liście ArrayList zgodnie z listą, które omówimy dalej wraz z wdrażaniem każdej operacji.

  • Dodanie elementu do listy/Dodaj element
  • Zmiana elementów/Ustawianie elementu
  • Usuwanie elementów/Usuń element
  • Elementy iteracyjne
  • zdobyć elementy
  • dodaj elementy pomiędzy dwiema liczbami
  • Sortowanie elementów
  • Rozmiar listy tablic

Operacje wykonywane w ArrayList

1. Dodawanie elementów

Aby dodać element do ArrayList, możemy użyć metody metoda dodawania(). . Ta metoda jest przeciążona, aby wykonać wiele operacji w oparciu o różne parametry. Są one następujące:

  • add(Object): Ta metoda służy do dodawania elementu na końcu listy ArrayList.
  • add(int indeks, obiekt): Ta metoda służy do dodawania elementu o określonym indeksie w ArrayList.

Poniżej implementacja powyższego podejścia:

Jawa
// Java Program to Add elements to An ArrayList // Importing all utility classes import java.util.*; // Main class class GFG {  // Main driver method  public static void main(String args[])  {  // Creating an Array of string type  ArrayListal = nowa ArrayList();  // Dodawanie elementów do ArrayList // Własne dane wejściowe al.add('Geeks');  al.add('Geeks');  // Tutaj podajemy indeks // pod którym ma zostać dodany al.add(1, 'For');  // Drukowanie wszystkich elementów tablicy ArrayList System.out.println(al);  } }>

Wyjście
[Geeks, For, Geeks]>

2. Zmiana elementów

Jeśli po dodaniu elementów będziemy chcieli zmienić dany element, możemy to zrobić za pomocą przycisku ustawić() metoda. Ponieważ lista ArrayList jest indeksowana, do elementu, który chcemy zmienić, odwołuje się indeks elementu. Dlatego ta metoda pobiera indeks i zaktualizowany element, który należy wstawić do tego indeksu.

Poniżej implementacja powyższego podejścia:

Jawa
// Java Program to Change elements in ArrayList // Importing all utility classes import java.util.*; // main class class GFG {  // Main driver method  public static void main(String args[])  {  // Creating an Arraylist object of string type  ArrayListal = nowa ArrayList();  // Dodawanie elementów do Arraylist // Niestandardowe elementy wejściowe al.add('Geeks');  al.add('Geeks');  // Dodanie określenia indeksu do dodania al.add(1, 'Geeks');  // Drukowanie elementów Arraylist System.out.println('Initial ArrayList ' + al);  // Ustawianie elementu na pierwszym indeksie al.set(1, 'For');  // Drukowanie zaktualizowanej listy tablic System.out.println('Updated ArrayList ' + al);  } }>

Wyjście
Initial ArrayList [Geeks, Geeks, Geeks] Updated ArrayList [Geeks, For, Geeks]>

3. Usuwanie elementów

Aby usunąć element z ArrayList, możemy użyć metody metoda usuwania(). . Ta metoda jest przeciążona, aby wykonać wiele operacji w oparciu o różne parametry. Są one następujące:

  • usuń (obiekt): Ta metoda służy do prostego usunięcia obiektu z listy ArrayList. Jeżeli takich obiektów jest wiele, to pierwsze wystąpienie obiektu jest usuwane.
  • usuń(intindeks): Ponieważ lista ArrayList jest indeksowana, metoda ta przyjmuje wartość całkowitą, która po prostu usuwa element znajdujący się pod tym konkretnym indeksem w ArrayList. Po usunięciu elementu wszystkie elementy zostają przesunięte w lewo w celu wypełnienia przestrzeni, a indeksy obiektów zostają zaktualizowane.

Przykład:

Jawa
// Java program to Remove Elements in ArrayList // Importing all utility classes import java.util.*; // Main class class GFG {  // Main driver method  public static void main(String args[])  {  // Creating an object of arraylist class  ArrayListal = nowa ArrayList();  // Dodawanie elementów do ArrayList // Dodawanie niestandardowe al.add('Geeks');  al.add('Geeks');  // Dodanie elementu o określonym indeksie al.add(1, 'For');  // Drukowanie wszystkich elementów ArrayList System.out.println('Initial ArrayList ' + al);  // Usuwanie elementu z góry ArrayList al.remove(1);  // Drukowanie zaktualizowanych elementów Arraylist System.out.println('Po usunięciu indeksu ' + al);  // Usuwanie tego elementu słownego z ArrayList al.remove('Geeks');  // Teraz drukuje zaktualizowaną ArrayList System.out.println('Po usunięciu obiektu ' + al);  } }>

Wyjście
Initial ArrayList [Geeks, For, Geeks] After the Index Removal [Geeks, Geeks] After the Object Removal [Geeks]>

4. Iterowanie tablicy ArrayList

Istnieje wiele sposobów iteracji po ArrayList. Najbardziej znane sposoby to użycie podstawowych dla pętli w połączeniu z A metoda get(). aby uzyskać element o określonym indeksie i zaawansowane dla pętli .

Przykład

Jawa
// Java program to Iterate the elements // in an ArrayList // Importing all utility classes import java.util.*; // Main class class GFG {  // Main driver method  public static void main(String args[])  {  // Creating an Arraylist of string type  ArrayListal = nowa ArrayList();  // Dodawanie elementów do ArrayList // przy użyciu standardowej metody add() al.add('Geeks');  al.add('Geeks');  al.add(1, 'For');  // Używając metody Get i // pętli for (int i = 0; i< al.size(); i++) {  System.out.print(al.get(i) + ' ');  }  System.out.println();  // Using the for each loop  for (String str : al)  System.out.print(str + ' ');  } }>

Wyjście
Geeks For Geeks Geeks For Geeks>

5. Zdobądź elementy

Jawa
// Java program to get the elemens in ArrayList import java.io.*; import java.util.*; class GFG {  public static void main (String[] args) {  ArrayList lista = nowa ArrayList();  // dodaj listę liczb.add(9);  lista.dodaj(5);  lista.dodaj(6);  System.out.println(lista);  // pobierz metodę Integer n= list.get(1);  System.out.println('w indeksie 1 liczba to:'+n);  } }>

Wyjście
[9, 5, 6] at indext 1 number is:5>

6. Dodaj elementy pomiędzy dwiema liczbami

Jawa
// Java program to add the elements  // between two numbers in ArrayList import java.io.*; import java.util.*; class GFG {  public static void main(String[] args)  {  ArrayList lista = nowa ArrayList();  lista.dodaj(1);  lista.dodaj(2);  lista.dodaj(4);  System.out.println(lista);  // wstaw brakujący element 3 list.add(2, 3);  System.out.println(lista);  } }>

Wyjście
[1, 2, 4] [1, 2, 3, 4]>

7. Sortowanie listy tablic

Jawa
// Java Program for ArrayList Sorting import java.io.*; import java.util.*; class GFG {  public static void main(String[] args)  {  ArrayList lista = nowa ArrayList();  lista.dodaj(2);  lista.dodaj(4);  lista.dodaj(3);  lista.dodaj(1);  System.out.println('Przed sortowaniem listy:');  System.out.println(lista);  Kolekcje.sort(lista);  System.out.println('po sortowaniu listy:');  System.out.println(lista);  } }>

Wyjście
Before sorting list: [2, 4, 3, 1] after sorting list: [1, 2, 3, 4]>

8. Rozmiar elementów

Jawa
// Java program to find the size  // of elements of an ArrayList import java.io.*; import java.util.*; class GFG {  public static void main(String[] args)  {  ArrayList lista = nowa ArrayList();  lista.dodaj(1);  lista.dodaj(2);  lista.dodaj(3);  lista.dodaj(4);  int b = lista.rozmiar();  System.out.println('Rozmiar to:' + b);  } }>

Wyjście
The size is :4>

Złożoność Java ArrayList

Operacja

Złożoność czasu

Złożoność przestrzeni

Wstawianie elementu do ArrayList

O(1)

NA)

Usuwanie elementu z ArrayList

NA)

O(1)

Przechodzenie przez elementy w ArrayList

NA)

NA)

Zastępowanie elementów w ArrayList

O(1)

O(1)

ArrayList w Javie to klasa w środowisku Java Collections, która implementuje interfejs List. Oto zalety i wady używania ArrayList w Javie.

Zalety Java ArrayList

  1. Dynamiczny rozmiar: ArrayList może dynamicznie zwiększać się i zmniejszać, co ułatwia dodawanie lub usuwanie elementów w razie potrzeby.
  2. Łatwy w użyciu: ArrayList jest prosty w użyciu, co czyni go popularnym wyborem dla wielu programistów Java.
  3. Szybki dostęp: ArrayList zapewnia szybki dostęp do elementów, ponieważ jest zaimplementowany jako tablica pod maską.
  4. Uporządkowana kolekcja: ArrayList zachowuje kolejność elementów, umożliwiając dostęp do elementów w kolejności, w jakiej zostały dodane.
  5. Obsługuje wartości null: ArrayList może przechowywać wartości null, co czyni je użytecznymi w przypadkach, gdy konieczne jest przedstawienie braku wartości.

Wady Java ArrayList

  1. Wolniejsze niż tablice: ArrayList jest wolniejsze niż tablice w przypadku niektórych operacji, takich jak wstawianie elementów na środku listy.
  2. Zwiększone wykorzystanie pamięci: ArrayList wymaga więcej pamięci niż tablice, ponieważ musi zachować swój dynamiczny rozmiar i obsługiwać zmianę rozmiaru.
  3. Nie jest bezpieczna dla wątków: ArrayList nie jest bezpieczna dla wątków, co oznacza, że ​​wiele wątków może jednocześnie uzyskiwać dostęp do listy i modyfikować ją, co prowadzi do potencjalnych warunków wyścigowych i uszkodzenia danych.
  4. Spadek wydajności: Wydajność ArrayList może się pogorszyć wraz ze wzrostem liczby elementów na liście, zwłaszcza w przypadku operacji takich jak wyszukiwanie elementów lub wstawianie elementów na środek listy.

Wniosek

Punkty, o których należy pamiętać z tego artykułu, wymieniono poniżej:

  • ArrayList jest częścią frameworka Collections. Dziedziczy klasę AbstractList i implementuje interfejs List.
  • ArrayList jest implementacją tablicy dynamicznej.
  • ArrayList można zainicjować przy użyciu różnych typów konstruktorów, takich jak bez parametrów, przekazując kolekcję jako parametr i przekazując liczbę całkowitą jako parametr.
  • W ArrayList można wykonywać następujące operacje: Dodawanie, usuwanie, iterowanie i sortowanie.

Często zadawane pytania dotyczące ArrayList

Co to jest ArrayList w Javie?

ArrayList w Javie jest częścią frameworku Collections. Służy do przechowywania elementów, a rozmiar można zmieniać.

W jaki sposób dane są przechowywane w ArrayList?

ArrayList może przechowywać dane do momentu zapełnienia rozmiaru ArrayList, po czym rozmiar ArrayList jest podwojony, jeśli chcemy przechowywać więcej elementów.

Czy ArrayList pozwala na duplikaty?

Tak, ArrayList umożliwia przechowywanie zduplikowanych wartości.