listiterator interface java with examples
Ten samouczek wyjaśnia interfejs ListIterator w języku Java do implementacji list przechodzenia. Dowiesz się o diagramie klas i metodach interfejsu ListIterator:
Podobnie jak Iterator, interfejs ListIterator zapewnia funkcjonalność przechodzenia przez implementacje list w Javie i uzyskiwania dostępu do elementów listy.
=> Sprawdź tutaj, aby zobaczyć A-Z samouczków szkoleniowych Java tutaj.
Czego się nauczysz:
Interfejs ListIterator w Javie
Poniżej wymieniono niektóre z głównych cech interfejsu ListIterator:
- ListIterator został wprowadzony w Javie 1.2
- ListIterator jest podinterfejsem interfejsu Iterator, tj. Rozszerza się z interfejsu Iteratora.
- ListIterator działa tylko z implementacjami list.
- ListIterator obsługuje wszystkie operacje, a mianowicie tworzenie, odczytywanie, aktualizowanie i usuwanie. (Zbiorczo nazywane operacjami CRUD).
- ListIterator jest dwukierunkowym Iteratorem i obsługuje iteratory do przodu i do tyłu.
- W przypadku ListIterator nie ma bieżącego elementu. Pozycja kursora jest wskazywana na położenie między elementem zwróconym przez metodę previous () a elementem, który zostałby zwrócony przez metodę next ().
Omówmy więcej na temat tego interfejsu w tym samouczku.
Diagram klas ListIterator
ListIterator to interfejs należący do struktury Collection API. Ten interfejs pochodzi od interfejsu Iterator. Oprócz dziedziczenia metod interfejsu Iterator obsługuje również metody dla iteracji dwukierunkowych i operacji CRUD.
Diagram klas interfejsu ListIterator pokazano poniżej.
Powyższy rysunek przedstawia diagram klas interfejsu ListIterator. W następnej sekcji omówimy szczegółowo każdą z metod przedstawionych na rysunku.
Metody ListIterator
Interfejs ListIterator udostępnia następujące metody, jak pokazano w poniższej tabeli.
Nazwa metody | Prototyp | Opis |
---|---|---|
usunąć() | void remove () | Usuwa ostatni element zwracany przez metodę next () lub previous (). |
hasNext () | boolean hasNext () | Sprawdza, czy listIterator ma więcej elementów do przejścia w kierunku do przodu. |
Kolejny() | E następny () | Zwraca następny element z listy. Następnie przesuwa kursor, aby wskazywał następny element. |
hasPrevious () | boolean hasPrevious () | Sprawdza, czy ListIterator ma więcej elementów w kierunku do tyłu / do tyłu. |
poprzedni() | E poprzednia () | Zwraca poprzedni element na liście i przenosi kursor o jedną pozycję w kierunku wstecz. |
nextIndex () | int nextIndex () | Zwraca indeks elementu, który zostanie zwrócony przez wywołanie metody next (). |
previousIndex () | int previousIndex () | Zwraca indeks elementu, który zostanie zwrócony przez wywołanie metody previous (). |
siedem) | void set (E i) | Zastępuje ostatni element zwracany przez metodę next () lub previous () na nową wartość. |
dodaj (E) | nieważne dodać (E e) | Dodaje nowy element do listy. |
Następnie szczegółowo opiszemy każdą z tych metod.
# 1) hasNext ()
Prototyp: boolean hasNext ()
Parametry: ZERO
Wartość zwracana:
- true => lista ma następny element
- False => lista nie ma więcej elementów
Opis: Ta metoda sprawdza, czy ListIterator ma więcej elementów do przejścia w kierunku do przodu. Jeśli ma więcej elementów, ta metoda zwraca wartość true.
# 2) dalej ()
Prototyp: E następny ()
Parametry: ZERO
Wartość zwracana: E => następny element na liście.
Opis: Metoda next () zwraca następny element na liście i przenosi kursor do następnego elementu.
Zgłoszony wyjątek: NoSuchElementException - jeśli ListIterator nie ma następnego elementu.
# 3) hasPrevious ()
Prototyp: boolean hasPrevious ()
Parametry: ZERO
Wartość zwracana: true => ListIterator ma poprzedni element
Opis: Sprawdza, czy ListIterator ma więcej elementów w kierunku do tyłu / do tyłu.
# 4) poprzednia ()
Prototyp: E poprzednia ()
Parametry: ZERO
Wartość zwracana: E => poprzedni element na liście
Opis: Ta metoda zwraca poprzedni element na liście podczas przechodzenia wstecz, a następnie przesuwa kursor do tyłu.
Zgłoszony wyjątek: NoSuchElementException - jeśli ListIterator nie ma następnego elementu.
# 5) nextIndex ()
Prototyp: int nextIndex ()
Parametry: ZERO
Wartość zwracana: int => indeks elementu, który zostanie zwrócony przez metodę next () lub rozmiar listy, jeśli ListIterator znajduje się na końcu listy.
Opis: Tę metodę można wywołać przed metodą next (). Metoda nextIndex () zwraca indeks elementu, który zostanie zwrócony przez metodę next (). Jeśli ListIterator znajduje się na końcu listy, ta metoda zwraca rozmiar listy.
# 6) previousIndex ()
Prototyp: int previousIndex ()
Parametry: ZERO
Wartość zwracana: int => indeks elementu, który zostanie zwrócony przez metodę previous () lub -1, jeśli ListIterator znajduje się na początku listy.
Opis: Tę metodę można wywołać przed metodą previous (). Metoda previousIndex () zwraca indeks elementu, który zostanie zwrócony przez metodę previous (). Jeśli ListIterator znajduje się na początku listy, metoda zwraca wartość -1.
# 7) usuń ()
Prototyp: void remove ()
Parametry: ZERO
Wartość zwracana: unieważnić
Opis: Metoda remove () usuwa ostatni element, który został zwrócony przez metodę previous () lub next (). Wywołanie metody remove () można wykonać tylko raz na wywołanie metody next () lub previous ().
Zgłoszony wyjątek:
- UnsupportedOperationException - ListIterator nie obsługuje operacji usuwania.
- IllegalStateException - Jeśli bieżąca operacja jest w stanie Illegal, tj. Nie została jeszcze wywołana ani następna, ani poprzednia, ani po wywołaniu następnej lub poprzedniej operacji, to add lub remove nie zostały wywołane.
# 8) zestaw (E)
Prototyp: void set (E i)
Parametry: e => nowy element, którym stary element ma zostać zastąpiony
Wartość zwracana: unieważnić
Opis: Metoda set () ustawia element zwracany przez metodę previous () lub next () z nową wartością przekazaną jako argument. Tę metodę można wywołać tylko wtedy, gdy metoda add () lub remove () nie zostanie wywołana po ostatnim wywołaniu metody previous () lub next ().
Zgłoszony wyjątek:
- UnsupportedOperationException - ListIterator nie obsługuje operacji ustawiania.
- ClassCastException - jeśli określonego elementu nie można dodać ze względu na jego klasę.
- IllegalArgumentException - jeśli dodawany element / argument jest niedozwolony lub nieprawidłowy.
- IllegalStateException - jeśli bieżąca operacja jest w stanie niedozwolonym, tj. Nie została jeszcze wywołana ani następna, ani poprzednia lub po wywołaniu następnej lub poprzedniej operacji, dodaj lub usuń nie zostały wywołane.
# 9) dodaj (E)
Prototyp: nieważne dodać (E e)
Parametry: e => nowy element do dodania do listy
Wartość zwracana: unieważnić
Opis: Metoda add () służy do dodawania nowego elementu do listy. Element jest dodawany tuż przed elementem, który zwróciłby next (), jeśli w ogóle, i po elemencie, który zwróciłaby metoda previous ().
jak wygląda modem
Zauważ, że w wyniku dodania elementu nie byłoby żadnej zmiany, aby zwrócić wartość next (), ale metoda previous () zwróci tylko dodany element.
Zgłoszony wyjątek:
- UnsupportedOperationException - ListIterator nie obsługuje metody add.
- ClassCastException, jeśli określony element nie może zostać dodany ze względu na jego klasę.
- IllegalArgumentException, jeśli dodawany element / argument jest niedozwolony lub nieprawidłowy.
Poniższy program Java pokazuje demonstrację wszystkich powyższych metod ListIterator.
import java.util.*; public class Main{ public static void main(String args()){ //define list and add elements to it ListnameList=new ArrayList(); nameList.add('Savich'); nameList.add('Dane'); nameList.add('Lacey'); nameList.add(1,'James'); System.out.println('Original List:' + nameList); //define a list iterator for this list ListIterator list_itr=nameList.listIterator(); System.out.println('List elements in forward direction:'); //while there are still elements in the list, display next index and element while(list_itr.hasNext()){ System.out.println('Index:'+list_itr.nextIndex()+' Element:'+list_itr.next()); } //call set() method to set next value to 'Sally' list_itr.set('Sally'); System.out.println('
List after set('Sally'):' + nameList); //while there are elements in the list, display previous index and element System.out.println('
List elements in backward direction:'); while(list_itr.hasPrevious()){ System.out.println('Index:'+list_itr.previousIndex()+' Element:'+list_itr.previous()); } //call remove () method list_itr.remove(); System.out.println('List after remove():' + nameList); } }
Wynik:
Interfejs ListIterator w przykładach Java
Zobaczmy kolejny przykład użycia ListIterator. W tym programie mamy ArrayList zawierającą wartości całkowite. Następnie za pomocą ListIterator przechodzimy przez listę i wyświetlamy elementy listy.
Ponadto wybieramy tylko elementy parzyste w ArrayList i zmieniamy ich wartości na liczby nieparzyste za pomocą metod ListIterator.
import java.util.ArrayList; import java.util.ListIterator; public class Main { public static void main(String() args) { //define ArrayList and add values to it using for loop ArrayList intList = new ArrayList(); for (int i = 0; i <10; i++) intList.add(i+2); System.out.println('Original ArrayList:' + intList); // define the ListIterator ListIterator list_itr = intList.listIterator(); System.out.println('List elements using listIterator:'); //while list has more elements while (list_itr.hasNext()) { //retrieve next element int i = (Integer)list_itr.next(); // print the element System.out.print(i + ' '); // change only even numbers to odd by setting value = value +1 to current element if (i%2==0) { list_itr.set(i+1); // set method to change value } } System.out.println(); System.out.println('Final ArrayList of odd values:' + intList); } }
Wynik:
Często Zadawane Pytania
P # 1) Co oznacza iterator?
Odpowiedź: Iterator to interfejs będący częścią struktury Collection w Javie. Ten interfejs jest obecny w pakiecie java.util. Interfejs iteratora służy do iteracji w kolekcji obiektów.
Pytanie 2) Co to jest interfejs iteratora w Javie?
Odpowiedź: Interfejs iteratora w Javie jest używany zamiast wyliczeń, które były wcześniej używane w Java Collection Framework. Interfejs iteratora jest obecny w Javie od wersji 1.2.
Za pomocą tego interfejsu można iterować po wszystkich kolekcjach Java i przetwarzać elementy kolekcji.
Pytanie 3) Jakie jest zastosowanie metody listIterator () w Javie?
Odpowiedź: Metoda listIterator () należy do pakietu java.util. *. Ta metoda zwraca iterator listy dla konkretnego obiektu listy, który go wywołał i może być używany do przechodzenia przez listy i elementów dostępu. ListIterator działa tylko na implementacjach list.
P # 4) Czy iterator jest klasą czy interfejsem?
Odpowiedź: Iterator nie jest klasą, ale interfejs w Javie . Interfejs iteratora może być implementowany przez inne klasy i używany do iteracji po elementach listy lub kolekcji.
Pytanie 5) Ile typów iteratorów występuje w Javie?
Odpowiedź: Iteratory w Javie są trzech typów:
- Wyliczenia: Jest to interfejs używany do odczytywania elementów z kolekcji, takich jak Vector, hashtable itp. Każdy element jest numerowany zgodnie z jego pozycją w kolekcji.
- Iterator: Możesz nazwać ten interfejs uniwersalnym, ponieważ możesz go zastosować do dowolnego obiektu kolekcji, aby przejść przez kolekcję. Jest to ulepszone wyliczenie z funkcją usuwania wraz z możliwością odczytu elementu.
- ListIterator: ListIterator to interfejs zapewniający dwukierunkową iterację, tj. W kierunkach do przodu i do tyłu. ListIterator działa tylko z implementacjami list, w tym LinkedList, ArrayList itp.
Wniosek
Interfejs ListIterator w Javie pochodzi z interfejsu Iteratora. Oprócz bezpośredniego dziedziczenia metod interfejsu Iterator, interfejs listIterator wprowadza różne własne metody, które mogą pomóc programiście w wykonywaniu dwukierunkowej iteracji.
W tym samouczku omówiliśmy diagram klas i różne metody interfejsu ListIterator. Widzieliśmy również implementację tych metod wraz ze sposobami przechodzenia przez różne listy.
=> Odwiedź tutaj, aby zobaczyć serię szkoleń Java dla wszystkich.
rekomendowane lektury
- Interfejs Java i samouczek klasy abstrakcyjnej z przykładami
- Samouczek JAVA dla początkujących: ponad 100 praktycznych samouczków wideo Java
- Java Iterator: Naucz się używać iteratorów w Javie z przykładami
- Samouczek dotyczący długości tablicy w języku Java z przykładami kodu
- Postrzępiona tablica w Javie - samouczek z przykładami
- Odwróć tablicę w Javie - 3 metody z przykładami
- Jak posortować tablicę w Javie - samouczek z przykładami
- Wybitne funkcje Java 8 z przykładami kodu