Interfejs List w Javie umożliwia przechowywanie uporządkowanej kolekcji. Jest to interfejs potomny Kolekcja . Jest to uporządkowany zbiór obiektów, w którym można przechowywać zduplikowane wartości. Ponieważ List zachowuje kolejność wstawiania, umożliwia dostęp pozycyjny i wstawianie elementów.
Spis treści
- Interfejs listy w Javie
- Deklaracja interfejsu listy Java
- Przykład listy Java
- Operacje w interfejsie listy Java
- Złożoność interfejsu list w Javie
- Iteracja po interfejsie listy w Javie
- Metody interfejsu list
- Lista Java a zestaw
Interfejs listy w Javie
Interfejs List znajduje się w pakiecie java.util i dziedziczy interfejs Kolekcji. Jest to fabryka interfejsu ListIterator. Za pomocą ListIterator możemy iterować listę w przód i w tył. Klasy implementacji interfejsu List to ArrayList, LinkedList, Stack i Vector. ArrayList i LinkedList są szeroko stosowane w programowaniu w języku Java. Klasa Vector jest przestarzała od wersji Java 5.
List i ArrayList w środowisku zbierania Java
Deklaracja interfejsu listy Java
public interface List extends Collection ;>
Omówmy szczegółowo tworzenie obiektów lub instancji w klasie List. Od Lista jest interfejs , nie można tworzyć obiektów z listy typów. Zawsze potrzebujemy klasy, która to implementuje Lista w celu stworzenia obiektu. A także po wprowadzeniu Genetyki w Javie 1.5 możliwe jest ograniczenie typu obiektu, który może być przechowywany na liście. Podobnie jak kilka innych „interfejsów” zdefiniowanych przez użytkownika, zaimplementowanych przez „klasy” zdefiniowane przez użytkownika, Lista to „interfejs” zaimplementowany przez Lista tablic klasa, wstępnie zdefiniowana w java.util pakiet.
Składnia listy Java
Ten typ bezpiecznej listy można zdefiniować jako:
List list = new ArrayList ();>
Notatka: Obj to typ obiektu, który ma być przechowywany na liście
Przykład listy Java
Jawa
// Java program to Demonstrate List Interface> > // Importing all utility classes> import> java.util.*;> > // Main class> // ListDemo class> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> > >// Creating an object of List interface> >// implemented by the ArrayList class> >List l1 =>new> ArrayList();> > >// Adding elements to object of List interface> >// Custom inputs> > >l1.add(>0>,>1>);> >l1.add(>1>,>2>);> > >// Print the elements inside the object> >System.out.println(l1);> > >// Now creating another object of the List> >// interface implemented ArrayList class> >// Declaring object of integer type> >List l2 =>new> ArrayList();> > >// Again adding elements to object of List interface> >// Custom inputs> >l2.add(>1>);> >l2.add(>2>);> >l2.add(>3>);> > >// Will add list l2 from 1 index> >l1.addAll(>1>, l2);> > >System.out.println(l1);> > >// Removes element from index 1> >l1.remove(>1>);> > >// Printing the updated List 1> >System.out.println(l1);> > >// Prints element at index 3 in list 1> >// using get() method> >System.out.println(l1.get(>3>));> > >// Replace 0th element with 5> >// in List 1> >l1.set(>0>,>5>);> > >// Again printing the updated List 1> >System.out.println(l1);> >}> }> |
>
>Wyjście
[1, 2] [1, 1, 2, 3, 2] [1, 2, 3, 2] 2 [5, 2, 3, 2]>
Teraz wykonajmy różne operacje przy użyciu interfejsu listy, aby lepiej to zrozumieć. Omówimy następujące operacje wymienione poniżej, a później zaimplementujemy je za pomocą czystych kodów Java.
Operacje w interfejsie listy Java
Ponieważ List jest interfejsem, można go używać tylko z klasą, która implementuje ten interfejs. Zobaczmy teraz, jak wykonać kilka często używanych operacji na liście.
- Operacja 1: Dodawanie elementów do klasy List za pomocą metody add().
- Operacja 2: Aktualizacja elementów klasy List przy użyciu metody set().
- Operacja 3: Wyszukiwanie elementów przy pomocy metod IndexOf(), lastIndexOf
- Operacja 4: Usuwanie elementów metodą usuwania().
- Operacja 5: Dostęp do elementów klasy List przy użyciu metody get().
- Operacja 6: Sprawdzenie czy element występuje w klasie List przy pomocy metody zawiera().
Teraz omówmy poszczególne operacje indywidualnie i zaimplementujmy je w kodzie, aby lepiej się nad nimi uchwycić.
1. Dodawanie elementów do klasy List za pomocą metoda dodawania().
Aby dodać element do listy możemy skorzystać z metody dodać() metoda. Ta metoda jest przeciążona, aby wykonać wiele operacji w oparciu o różne parametry.
Parametry: Przyjmuje 2 parametry, a mianowicie:
- dodaj (obiekt): Ta metoda służy do dodania elementu na końcu listy.
- dodaj(int indeks, obiekt): Ta metoda służy do dodawania elementu pod określonym indeksem na liście
Przykład:
Jawa
wartość logiczna na ciąg Java
// Java Program to Add Elements to a List> > // Importing all utility classes> import> java.util.*;> > // Main class> class> GFG {> > >// Main driver method> >public> static> void> main(String args[])> >{> >// Creating an object of List interface,> >// implemented by ArrayList class> >List al =>new> ArrayList();> > >// Adding elements to object of List interface> >// Custom elements> >al.add(>'Geeks'>);> >al.add(>'Geeks'>);> >al.add(>1>,>'For'>);> > >// Print all the elements inside the> >// List interface object> >System.out.println(al);> >}> }> |
>
>Wyjście
[Geeks, For, Geeks]>
2. Aktualizacja elementów
Jeśli po dodaniu elementów będziemy chcieli zmienić dany element, możemy to zrobić za pomocą przycisku ustawić() metoda. Ponieważ List jest indeksowany, element, który chcemy zmienić, odwołuje się do indeksu elementu. Dlatego ta metoda pobiera indeks i zaktualizowany element, który należy wstawić do tego indeksu.
Przykład:
Jawa
// Java Program to Update Elements in a List> > // Importing utility classes> import> java.util.*;> > // Main class> class> GFG {> > >// Main driver method> >public> static> void> main(String args[])> >{> >// Creating an object of List interface> >List al =>new> ArrayList();> > >// Adding elements to object of List class> >al.add(>'Geeks'>);> >al.add(>'Geeks'>);> >al.add(>1>,>'Geeks'>);> > >// Display theinitial elements in List> >System.out.println(>'Initial ArrayList '> + al);> > >// Setting (updating) element at 1st index> >// using set() method> >al.set(>1>,>'For'>);> > >// Print and display the updated List> >System.out.println(>'Updated ArrayList '> + al);> >}> }> |
>
>Wyjście
Initial ArrayList [Geeks, Geeks, Geeks] Updated ArrayList [Geeks, For, Geeks]>
3. Wyszukiwanie elementów
Wyszukiwanie elementów w interfejsie List jest częstą operacją w programowaniu w języku Java. Interfejs List udostępnia kilka metod wyszukiwania elementów, np indeks() , ostatniIndexOf() metody.
Metoda indeksOf() zwraca indeks pierwszego wystąpienia określonego elementu na liście, natomiast metoda lastIndexOf() zwraca indeks ostatniego wystąpienia określonego elementu.
Parametry:
- indeks(elementu): Zwraca indeks pierwszego wystąpienia określonego elementu na liście lub -1, jeśli element nie został znaleziony
- ostatniIndexOf(element): Zwraca indeks ostatniego wystąpienia określonego elementu na liście lub -1, jeśli element nie został znaleziony
Przykład:
Jawa
GB kontra MB
import> java.util.ArrayList;> import> java.util.List;> > public> class> ListExample {> >public> static> void> main(String[] args)> >{> >// create a list of integers> >List numbers =>new> ArrayList();> > >// add some integers to the list> >numbers.add(>1>);> >numbers.add(>2>);> >numbers.add(>3>);> >numbers.add(>2>);> > >// use indexOf() to find the first occurrence of an> >// element in the list> >int> index = numbers.indexOf(>2>);> >System.out.println(> >'The first occurrence of 2 is at index '> >+ index);> > >// use lastIndexOf() to find the last occurrence of> >// an element in the list> >int> lastIndex = numbers.lastIndexOf(>2>);> >System.out.println(> >'The last occurrence of 2 is at index '> >+ lastIndex);> >}> }> |
>
>Wyjście
The first occurrence of 2 is at index 1 The last occurrence of 2 is at index 3>
4. Usuwanie elementów
Aby usunąć element z listy, możemy użyć metody usunąć() metoda. Ta metoda jest przeciążona, aby wykonać wiele operacji w oparciu o różne parametry. Oni są:
Parametry:
- usuń (obiekt): Ta metoda służy do prostego usunięcia obiektu z listy. Jeżeli takich obiektów jest wiele, to pierwsze wystąpienie obiektu jest usuwane.
- usuń(intindeks): Ponieważ lista jest indeksowana, metoda ta przyjmuje wartość całkowitą, która po prostu usuwa element znajdujący się pod tym konkretnym indeksem na liście. 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 from a List> > // Importing List and ArrayList classes> // from java.util package> import> java.util.ArrayList;> import> java.util.List;> > // Main class> class> GFG {> > >// Main driver method> >public> static> void> main(String args[])> >{> > >// Creating List class object> >List al =>new> ArrayList();> > >// Adding elements to the object> >// Custom inputs> >al.add(>'Geeks'>);> >al.add(>'Geeks'>);> > >// Adding For at 1st indexes> >al.add(>1>,>'For'>);> > >// Print the initialArrayList> >System.out.println(>'Initial ArrayList '> + al);> > >// Now remove element from the above list> >// present at 1st index> >al.remove(>1>);> > >// Print the List after removal of element> >System.out.println(>'After the Index Removal '> + al);> > >// Now remove the current object from the updated> >// List> >al.remove(>'Geeks'>);> > >// Finally print the updated List now> >System.out.println(>'After the Object Removal '> >+ al);> >}> }> |
>
>Wyjście
Initial ArrayList [Geeks, For, Geeks] After the Index Removal [Geeks, Geeks] After the Object Removal [Geeks]>
5. Dostęp do elementów
Aby uzyskać dostęp do elementu na liście, możemy użyć metody Dostawać() metoda, która zwraca element o określonym indeksie
Parametry:
get(int indeks): Ta metoda zwraca element o określonym indeksie na liście.
Przykład:
Jawa
lokalna data i godzina Java
// Java Program to Access Elements of a List> > // Importing all utility classes> import> java.util.*;> > // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// Creating an object of List interface,> >// implemented by ArrayList class> >List al =>new> ArrayList();> > >// Adding elements to object of List interface> >al.add(>'Geeks'>);> >al.add(>'For'>);> >al.add(>'Geeks'>);> > >// Accessing elements using get() method> >String first = al.get(>0>);> >String second = al.get(>1>);> >String third = al.get(>2>);> > >// Printing all the elements inside the> >// List interface object> >System.out.println(first);> >System.out.println(second);> >System.out.println(third);> >System.out.println(al);> >}> }> |
>
>Wyjście
Geeks For Geeks [Geeks, For, Geeks]>
6. Sprawdzanie, czy element znajduje się na liście
Aby sprawdzić czy dany element znajduje się na liście możemy skorzystać z metody zawiera() metoda. Ta metoda zwraca wartość true, jeśli określony element znajduje się na liście, w przeciwnym razie zwraca wartość false.
Parametry:
zawiera(Object): Ta metoda przyjmuje pojedynczy parametr, obiekt do sprawdzenia, jeśli znajduje się na liście.
Przykład:
Jawa
// Java Program to Check if an Element is Present in a List> > // Importing all utility classes> import> java.util.*;> > // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// Creating an object of List interface,> >// implemented by ArrayList class> >List al =>new> ArrayList();> > >// Adding elements to object of List interface> >al.add(>'Geeks'>);> >al.add(>'For'>);> >al.add(>'Geeks'>);> > >// Checking if element is present using contains()> >// method> >boolean> isPresent = al.contains(>'Geeks'>);> > >// Printing the result> >System.out.println(>'Is Geeks present in the list? '> >+ isPresent);> >}> }> |
>
>Wyjście
Is Geeks present in the list? true>
Złożoność interfejsu list w Javie
| Operacja | Złożoność czasu | Złożoność przestrzeni |
|---|---|---|
| Dodawanie elementu w interfejsie listy | O(1) | O(1) |
| Usuń element z interfejsu listy | NA) | NA) |
| Zamień element w interfejsie listy | NA) | NA) |
| Interfejs listy przechodzenia | NA) | NA) |
Iteracja po interfejsie listy w Javie
Do tej pory mamy bardzo mały rozmiar danych wejściowych i wykonujemy operacje ręcznie dla każdego elementu. Omówmy teraz różne sposoby iteracji po liście, aby działały dla większego zestawu próbek.
Metody: Istnieje wiele sposobów iteracji po liście. 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 java utility classes> import> java.util.*;> > // Main class> public> class> GFG {> > >// main driver method> >public> static> void> main(String args[])> >{> >// Creating an empty Arraylist of string type> >List al =>new> ArrayList();> > >// Adding elements to above object of ArrayList> >al.add(>'Geeks'>);> >al.add(>'Geeks'>);> > >// Adding element at specified position> >// inside list object> >al.add(>1>,>'For'>);> > >// Using for loop for iteration> >for> (>int> i =>0>; i // Using get() method to // access particular element System.out.print(al.get(i) + ' '); } // New line for better readability System.out.println(); // Using for-each loop for iteration for (String str : al) // Printing all the elements // which was inside object System.out.print(str + ' '); } }> |
>
globalna zmienna JavaScript
>Wyjście
Geeks For Geeks Geeks For Geeks>
Metody interfejsu list
Ponieważ główna koncepcja różnych typów list jest taka sama, interfejs listy zawiera następujące metody:
| metoda | Opis |
|---|---|
| add(int indeks, element) | Ta metoda jest używana z interfejsem listy Java w celu dodania elementu pod określonym indeksem na liście. Po przekazaniu pojedynczego parametru po prostu dodaje element na końcu listy. |
| addAll(indeks int, kolekcja kolekcji) | Ta metoda jest używana z interfejsem list w Javie, aby dodać do listy wszystkie elementy z danej kolekcji. Przekazanie pojedynczego parametru powoduje dodanie wszystkich elementów danej kolekcji na końcu listy. |
| rozmiar() | Ta metoda jest używana z interfejsem listy Java w celu zwrócenia rozmiaru listy. |
| jasne() | Ta metoda służy do usuwania wszystkich elementów z listy. Jednakże odniesienie do utworzonej listy jest nadal przechowywane. |
| usuń(indeks int) | Ta metoda usuwa element z określonego indeksu. Przesuwa kolejne elementy (jeśli występują) w lewo i zmniejsza ich indeksy o 1. |
| usuń (element) | Ta metoda jest używana z interfejsem Java List w celu usunięcia pierwszego wystąpienia danego elementu na liście. |
| pobierz (indeks int) | Ta metoda zwraca elementy o określonym indeksie. |
| set(int indeks, element) | Ta metoda zastępuje elementy o danym indeksie nowym elementem. Funkcja ta zwraca element, który właśnie został zastąpiony nowym elementem. |
| indeksOf(elementu) | Metoda ta zwraca pierwsze wystąpienie danego elementu lub -1 jeśli elementu nie ma na liście. |
| lastIndexOf(element) | Metoda ta zwraca ostatnie wystąpienie danego elementu lub -1 jeśli elementu nie ma na liście. |
| równa się (element) | Ta metoda jest używana z interfejsem listy Java w celu porównania równości danego elementu z elementami listy. |
| hashCode() | Ta metoda jest używana z interfejsem list w Javie w celu zwrócenia wartości kodu skrótu danej listy. |
| jest pusty() | Ta metoda jest używana z interfejsem listy Java w celu sprawdzenia, czy lista jest pusta, czy nie. Zwraca wartość true, jeśli lista jest pusta, w przeciwnym razie wartość false. |
| zawiera (element) | Ta metoda jest używana z interfejsem list w Javie, aby sprawdzić, czy lista zawiera dany element, czy nie. Zwraca wartość true, jeśli lista zawiera element. |
| zawieraWszystko(kolekcja kolekcji) | Ta metoda jest używana z interfejsem listy Java w celu sprawdzenia, czy lista zawiera całą kolekcję elementów. |
| sort (komparator komparatora) | Ta metoda jest używana z interfejsem list w Javie do sortowania elementów listy na podstawie podanych danych komparator . |
Lista Java a zestaw
Zarówno interfejs List, jak i interfejs Set dziedziczą interfejs Collection. Istnieją jednak między nimi pewne różnice.
| Lista | Ustawić |
|---|---|
| Lista jest uporządkowaną sekwencją. | Zbiór jest sekwencją nieuporządkowaną. |
| Lista pozwala na powielanie elementów | Zestaw nie pozwala na powielanie elementów. |
| Można uzyskać dostęp do elementów według ich pozycji. | Dostęp do pozycji elementów jest niedozwolony. |
| Można przechowywać wiele elementów zerowych. | Element null można zapisać tylko raz. |
| Implementacje list to ArrayList, LinkedList, Vector, Stack | Implementacje zestawów to HashSet, LinkedHashSet. |
Powiązanie klas z interfejsem listy Java
Omówmy teraz klasy implementujące interfejs listy, dla których najpierw odwołamy się do poniższej reprezentacji graficznej, aby lepiej zrozumieć interfejs listy. Jest następująco:
Lista abstrakcyjna , CopyOnWriteArrayList , oraz Abstrakcyjna lista sekwencyjna to klasy implementujące interfejs List. W każdej z wymienionych klas zaimplementowana jest osobna funkcjonalność. Są one następujące:
- 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.
- 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.
- 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.
Będziemy postępować w ten sposób.
- Lista tablic
- Wektor
- Stos
- Połączona lista
Omówmy je po kolei i zaimplementujmy, aby zrozumieć działanie klas z interfejsem List.
1. Lista tablic
Lista tablic class zaimplementowana w frameworku kolekcji 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ą. Zobaczmy, jak utworzyć obiekt listy przy użyciu tej klasy.
Przykład:
Jawa
// Java program to demonstrate the> // creation of list object using the> // ArrayList class> > import> java.io.*;> import> java.util.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >// Size of ArrayList> >int> n =>5>;> > >// Declaring the List with initial size n> >List arrli =>new> ArrayList(n);> > >// Appending the new elements> >// at the end of the list> >for> (>int> i =>1>; i <= n; i++)> >arrli.add(i);> > >// Printing elements> >System.out.println(arrli);> > >// Remove element at index 3> >arrli.remove(>3>);> > >// Displaying the list after deletion> >System.out.println(arrli);> > >// Printing elements one by one> >for> (>int> i =>0>; i System.out.print(arrli.get(i) + ' '); } }> |
>
>Wyjście
[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>
2. Wektor
Vector to klasa zaimplementowana w frameworku kolekcji, która implementuje rozwijalną tablicę obiektów. Vector implementuje dynamiczną tablicę, co oznacza, że może rosnąć lub zmniejszać się w zależności od potrzeb. Podobnie jak tablica, zawiera komponenty, do których można uzyskać dostęp za pomocą indeksu będącego liczbą całkowitą. Wektory zasadniczo należą do starszych klas, ale teraz są w pełni kompatybilne z kolekcjami. Zobaczmy, jak utworzyć obiekt listy przy użyciu tej klasy.
Przykład:
Jawa
// Java program to demonstrate the> // creation of list object using the> // Vector class> > import> java.io.*;> import> java.util.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >// Size of the vector> >int> n =>5>;> > >// Declaring the List with initial size n> >List v =>new> Vector(n);> > >// Appending the new elements> >// at the end of the list> >for> (>int> i =>1>; i <= n; i++)> >v.add(i);> > >// Printing elements> >System.out.println(v);> > >// Remove element at index 3> >v.remove(>3>);> > >// Displaying the list after deletion> >System.out.println(v);> > >// Printing elements one by one> >for> (>int> i =>0>; i System.out.print(v.get(i) + ' '); } }> |
>
>Wyjście
[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>
3. Stos
Stack to klasa zaimplementowana w frameworku kolekcji, rozszerzająca modele klas wektorowych i implementująca Przykład:
Jawa
instrukcja if-else JavaPrzykład:
Jawa
// Java program to demonstrate the> // creation of list object using the> // Stack class> > import> java.io.*;> import> java.util.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >// Size of the stack> >int> n =>5>;> > >// Declaring the List> >List s =>new> Stack();> > >// Appending the new elements> >// at the end of the list> >for> (>int> i =>1>; i <= n; i++)> >s.add(i);> > >// Printing elements> >System.out.println(s);> > >// Remove element at index 3> >s.remove(>3>);> > >// Displaying the list after deletion> >System.out.println(s);> > >// Printing elements one by one> >for> (>int> i =>0>; i System.out.print(s.get(i) + ' '); } }> |
>
>Wyjście
[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>
4. Połączona lista
Przykład:
Jawa
LinkedList to klasa zaimplementowana w frameworku kolekcji, który z natury implementuje Przykład:Jawa
Przykład:Jawa
// Java program to demonstrate the> // creation of list object using the> // LinkedList class> > import> java.io.*;> import> java.util.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >// Size of the LinkedList> >int> n =>5>;> > >// Declaring the List with initial size n> >List ll =>new> LinkedList();> > >// Appending the new elements> >// at the end of the list> >for> (>int> i =>1>; i <= n; i++)> >ll.add(i);> > >// Printing elements> >System.out.println(ll);> > >// Remove element at index 3> >ll.remove(>3>);> > >// Displaying the list after deletion> >System.out.println(ll);> > >// Printing elements one by one> >for> (>int> i =>0>; i System.out.print(ll.get(i) + ' '); } }> |
>
>Wyjście
[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>