listiterator interface java with examples
Tento výukový program vysvětluje rozhraní ListIterator v prostředí Java k procházení implementací seznamu. Dozvíte se o diagramu tříd a metodách rozhraní ListIterator:
Stejně jako Iterator poskytuje rozhraní ListIterator funkce pro procházení implementacemi seznamu v Javě a přístup k prvkům seznamu.
=> Podívejte se sem a podívejte se na A-Z výukových kurzů Java zde.
Co se naučíte:
Rozhraní ListIterator v Javě
Některé z hlavních charakteristik rozhraní ListIterator jsou uvedeny níže:
- ListIterator byl představen v prostředí Java 1.2
- ListIterator je dílčí rozhraní rozhraní Iterator, tj. Rozšiřuje se od rozhraní Iterator.
- ListIterator funguje pouze s implementacemi seznamu.
- ListIterator podporuje všechny operace, jmenovitě vytváření, čtení, aktualizaci a mazání. (Souhrnně nazývané operace CRUD).
- ListIterator je obousměrný iterátor a podporuje iterátory vpřed i vzad.
- V případě ListIterator neexistuje žádný aktuální prvek. Pozice kurzoru ukazuje na místo mezi prvkem vráceným metodou previous () a prvkem, který by byl vrácen metodou next ().
Pojďme si o tomto rozhraní promluvit v tomto výukovém programu.
Diagram tříd ListIterator
ListIterator je rozhraní, které patří do rozhraní API rozhraní Collections. Toto rozhraní sahá od rozhraní Iterator. Kromě zdědění metod rozhraní Iterator podporuje také metody pro obousměrné iterace a operace CRUD.
Níže je uveden diagram tříd rozhraní ListIterator.
Výše uvedený obrázek ukazuje diagram tříd rozhraní ListIterator. V další části budeme podrobně diskutovat o každé z metod zobrazených na obrázku.
Metody ListIterator
Rozhraní ListIterator poskytuje následující metody, jak je uvedeno v následující tabulce.
Název metody | Prototyp | Popis |
---|---|---|
odstranit() | void remove () | Odebere poslední prvek vrácený metodou next () nebo previous (). |
hasNext () | boolean hasNext () | Zkontroluje, zda listIterator má více prvků k procházení vpřed. |
další() | E další () | Vrátí další prvek v seznamu. Poté přesune kurzor na další prvek. |
hasPrevious () | boolean hasPrevious () | Zkontroluje, zda ListIterator má více prvků ve směru zpět / zpět. |
předchozí() | E předchozí () | Vrátí předchozí prvek v seznamu a posune kurzor na jednu pozici ve zpětném směru. |
nextIndex () | int nextIndex () | Vrátí index prvku, který bude vrácen metodou next (). |
previousIndex () | int previousIndex () | Vrátí index prvku, který bude vrácen voláním metody previous (). |
sedm) | neplatná sada (E a) | Nahradí poslední prvek vrácený metodou next () nebo previous () novou hodnotou. |
přidat (E) | void add (E e) | Přidá nový prvek do seznamu. |
Dále podrobně popíšeme každou z těchto metod.
# 1) hasNext ()
Prototyp: boolean hasNext ()
Parametry: NULA
Návratová hodnota:
nejlepší bezplatný ssh klient pro Windows
- true => seznam má další prvek
- False => seznam nemá žádné další prvky
Popis: Tato metoda kontroluje, zda ListIterator má více prvků k procházení ve směru vpřed. Pokud má více prvků, vrátí tato metoda hodnotu true.
# 2) další ()
Prototyp: E další ()
Parametry: NULA
Návratová hodnota: E => další prvek v seznamu.
Popis: Metoda next () vrací další prvek v seznamu a přesune kurzor na další prvek.
Vyvolána výjimka: NoSuchElementException - pokud ListIterator nemá žádný další prvek.
# 3) hasPrevious ()
Prototyp: boolean hasPrevious ()
Parametry: NULA
Návratová hodnota: true => ListIterator má předchozí prvek
Popis: Zkontroluje, zda ListIterator má více prvků ve směru zpět / zpět.
# 4) předchozí ()
Prototyp: E předchozí ()
Parametry: NULA
Návratová hodnota: E => předchozí prvek v seznamu
Popis: Tato metoda vrací předchozí prvek v seznamu při procházení dozadu a poté posune kurzor dozadu.
Vyvolána výjimka: NoSuchElementException - pokud ListIterator nemá žádný další prvek.
# 5) nextIndex ()
Prototyp: int nextIndex ()
Parametry: NULA
Návratová hodnota: int => index prvku, který bude vrácen metodou next () nebo velikostí seznamu, pokud je ListIterator na konci seznamu.
Popis: Tuto metodu lze volat před metodou next (). Metoda nextIndex () vrací index prvku, který bude vrácen metodou next (). Pokud je ListIterator na konci seznamu, vrátí tato metoda velikost seznamu.
# 6) previousIndex ()
Prototyp: int previousIndex ()
Parametry: NULA
Návratová hodnota: int => index prvku, který bude vrácen metodou previous () nebo -1, pokud je ListIterator na začátku seznamu.
Popis: Tuto metodu lze volat před předchozí metodou (). Metoda previousIndex () vrací index prvku, který bude vrácen metodou previous (). Pokud je ListIterator na začátku seznamu, vrátí metoda -1.
# 7) odebrat ()
Prototyp: void remove ()
Parametry: NULA
Návratová hodnota: prázdnota
Popis: Metoda remove () odstraní poslední prvek, který byl vrácen metodou previous () nebo next (). Volání metody remove () lze provést pouze jednou za volání metody next () nebo previous ().
Vyvolána výjimka:
- UnsupportedOperationException - ListIterator nepodporuje operaci odebrání.
- IllegalStateException - Pokud je aktuální operace v nelegálním stavu, tj. Ani další, ani předchozí ještě nebyli voláni nebo po volání dalšího nebo předchozího, pak nebylo voláno přidání nebo odebrání.
# 8) sada (E)
Prototyp: neplatná sada (E a)
Parametry: e => nový prvek, kterým má být nahrazen starý prvek
Návratová hodnota: prázdnota
Popis: Metoda set () nastavuje prvek vrácený metodou previous () nebo next () s novou hodnotou předanou jako argument. Tuto metodu lze volat pouze v případě, že metoda add () nebo remove () není volána po posledním volání metody previous () nebo next ().
Vyvolána výjimka:
- UnsupportedOperationException - ListIterator nepodporuje nastavenou operaci.
- ClassCastException - Pokud zadaný prvek nelze přidat kvůli jeho třídě.
- IllegalArgumentException - Pokud je přidávaný prvek / argument neplatný nebo neplatný.
- IllegalStateException - Pokud je aktuální operace v nelegálním stavu, tzn. Ještě nebyly volány další ani předchozí nebo po volání dalšího nebo předchozího nebyly volány přidání nebo odebrání.
# 9) přidat (E)
Prototyp: void add (E e)
Parametry: e => nový prvek, který má být přidán do seznamu
Návratová hodnota: prázdnota
otevřené testovací nástroje pro odpočinek api
Popis: Metoda add () se používá k přidání nového prvku do seznamu. Prvek se přidá těsně před element, který by se vrátil next (), pokud existuje, a za element, který by se vrátila metoda previous ().
Všimněte si, že v důsledku přidání prvku by nedošlo k žádné změně, která by vrátila hodnotu next (), ale metoda previous () vrátí pouze přidaný prvek.
Vyvolána výjimka:
- UnsupportedOperationException - ListIterator nepodporuje metodu přidání.
- ClassCastException, pokud je zadaný prvek, který nelze přidat kvůli jeho třídě.
- IllegalArgumentException, pokud je přidávaný prvek / argument neplatný nebo neplatný.
Následující program Java ukazuje ukázku všech výše uvedených 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); } }
Výstup:
Rozhraní ListIterator v příkladech Java
Podívejme se na další příklad použití ListIterator. V tomto programu máme ArrayList celočíselných hodnot. Pak pomocí ListIterator projdeme seznamem a zobrazíme prvky seznamu.
Také v ArrayList vybereme pouze sudé prvky a pomocí metod ListIterator změníme jejich hodnoty na lichá čísla.
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); } }
Výstup:
Často kladené otázky
Otázka č. 1) Co je míněno iterátorem?
Odpovědět: Iterator je rozhraní, které je součástí rámce Collection v Javě. Toto rozhraní je obsaženo v balíčku java.util. Rozhraní iterátoru se používá k iteraci prostřednictvím kolekce objektů.
Otázka 2) Co je to rozhraní iterátoru v Javě?
Odpovědět: Rozhraní iterátoru v jazyce Java se používá namísto výčtů, které byly dříve použity v prostředí Java Collection Framework. Rozhraní iterátoru je v Javě od verze 1.2.
Pomocí tohoto rozhraní můžete iterovat v libovolných kolekcích Java a zpracovávat prvky kolekce.
Otázka č. 3) Jaké je použití metody listIterator () v Javě?
Odpovědět: Metoda listIterator () patří do balíčku java.util. *. Tato metoda vrací iterátor seznamu pro konkrétní objekt seznamu, který jej vyvolal, a lze jej použít k procházení seznamů a přístupových prvků. ListIterator funguje pouze na implementacích seznamu.
Otázka č. 4) Je iterátor třída nebo rozhraní?
Odpovědět: Iterátor není třída, ale třída rozhraní v Javě . Rozhraní Iterator lze implementovat jinými třídami a použít k iteraci prostřednictvím prvků seznamu nebo kolekce.
Otázka č. 5) Kolik typů iterátorů je v Javě?
Odpovědět: Iterátory v Javě jsou tří typů:
- Výčty: Toto je rozhraní, které se používá ke čtení prvků ze sbírek, jako je Vector, hashtable atd. Každý prvek je očíslován podle jeho polohy v kolekci.
- Iterátor: Toto rozhraní můžete nazvat univerzálním, protože ho můžete použít na jakýkoli objekt kolekce, který bude procházet kolekcí. Toto je vylepšený výčet s funkcí odebrání spolu se schopností číst prvek.
- ListIterator: ListIterator je rozhraní, které poskytuje obousměrnou iteraci, tj. Ve směru dopředu a dozadu. ListIterator funguje pouze s implementacemi seznamu včetně LinkedList, ArrayList atd.
Závěr
Rozhraní ListIterator v Javě je odvozeno z rozhraní Iterator. Kromě přímého dědění metod rozhraní Iterator zavádí rozhraní listIterator různé vlastní metody, které mohou programátorovi pomoci při provádění obousměrné iterace.
V tomto kurzu jsme diskutovali o diagramu tříd a různých metodách rozhraní ListIterator. Také jsme viděli implementaci těchto metod spolu se způsoby procházení různými seznamy.
=> Navštivte zde a prohlédněte si sérii školení Java pro všechny.
Doporučené čtení
- Výukový program pro rozhraní Java a abstraktní třídu s příklady
- Výukový program JAVA pro začátečníky: 100+ praktických výukových programů Java Video
- Java Iterator: Naučte se používat Iterátory v Javě s příklady
- Výukový program Java Array Length s příklady kódu
- Jagged Array In Java - výukový program s příklady
- Obrátit pole v Javě - 3 metody s příklady
- Jak řadit pole v Javě - návod s příklady
- Prominentní funkce Java 8 s příklady kódu