listiterator interface java with examples
Tento výukový program vysvetľuje rozhranie ListIterator v prostredí Java na prechádzanie implementácií zoznamu. Dozviete sa viac o schéme tried a metódach rozhrania ListIterator:
zlúčiť triediť implementáciu c ++
Rovnako ako Iterator, rozhranie ListIterator poskytuje funkcie na prechádzanie implementáciami zoznamu v Jave a prístup k prvkom zoznamu.
=> Tu nájdete A-Z výučbových kurzov Java.
Čo sa dozviete:
Rozhranie ListIterator v Jave
Niektoré z hlavných charakteristík rozhrania ListIterator sú uvedené nižšie:
- ListIterator bol predstavený v prostredí Java 1.2
- ListIterator je čiastkové rozhranie rozhrania Iterátora, t. J. Siaha od rozhrania Iterátora.
- ListIterator funguje iba s implementáciami zoznamu.
- ListIterator podporuje všetky operácie, a to vytváranie, čítanie, aktualizáciu a mazanie. (Súhrnne nazývané operácie CRUD).
- ListIterator je obojsmerný iterátor a podporuje iterátory v smere dopredu aj dozadu.
- V prípade ListIterator neexistuje žiadny aktuálny prvok. Poloha kurzora ukazuje na miesto medzi prvkom vráteným metódou previous () a prvkom, ktorý by sa vrátil metódou next ().
Poďme si o tomto rozhraní predstaviť viac v tomto výučbe.
Diagram triedy ListIterator
ListIterator je rozhranie, ktoré patrí do rámca API kolekcie. Toto rozhranie siaha od rozhrania Iterátora. Okrem zdedenia metód rozhrania Iterator podporuje aj metódy pre obojsmerné iterácie a operácie CRUD.
Triedny diagram rozhrania ListIterator je uvedený nižšie.
Vyššie uvedený obrázok zobrazuje diagram tried rozhrania ListIterator. V nasledujúcej časti si podrobne rozoberieme každú z metód zobrazených na obrázku.
Metódy ListIterator
Rozhranie ListIterator poskytuje nasledujúce metódy, ako je uvedené v nasledujúcej tabuľke.
Názov metódy | Prototyp | Popis |
---|---|---|
odstrániť () | void remove () | Odstráni posledný prvok vrátený metódou next () alebo previous (). |
hasNext () | boolean hasNext () | Skontroluje, či má listIterator viac prvkov na prechádzanie vpred. |
Ďalšie() | E ďalej () | Vráti nasledujúci prvok v zozname. Potom presunie kurzor tak, aby ukazoval na nasledujúci prvok. |
hasPrevious () | boolean hasPrevious () | Skontroluje, či má ListIterator viac prvkov v smere dozadu / dozadu. |
predchádzajúca () | E predchádzajúci () | Vráti predchádzajúci prvok v zozname a posunie kurzor na jednu pozíciu smerom dozadu. |
nextIndex () | int nextIndex () | Vráti index prvku, ktorý bude vrátený volaním metódy next (). |
previousIndex () | int previousIndex () | Vráti index prvku, ktorý sa vráti volaním metódy previous (). |
sedem) | neplatná množina (E a) | Nahradí posledný prvok vrátený metódou next () alebo previous () novou hodnotou. |
pridať (E) | void add (E e) | Pridá nový prvok do zoznamu. |
Ďalej podrobne opíšeme každú z týchto metód.
# 1) hasNext ()
Prototyp: boolean hasNext ()
Parametre: NIL
Návratová hodnota:
- true => zoznam má ďalší prvok
- False => zoznam nemá ďalšie prvky
Popis: Táto metóda kontroluje, či má ListIterator viac prvkov na prechádzanie v smere dopredu. Ak má viac prvkov, potom táto metóda vráti hodnotu true.
# 2) next ()
Prototyp: E ďalej ()
Parametre: NIL
Návratová hodnota: E => nasledujúci prvok v zozname.
Popis: Metóda next () vráti nasledujúci prvok v zozname a presunie kurzor na nasledujúci prvok.
Vyvolaná výnimka: NoSuchElementException - ak ListIterator nemá žiadny ďalší prvok.
# 3) hasPrevious ()
Prototyp: boolean hasPrevious ()
Parametre: NIL
Návratová hodnota: true => ListIterator má predchádzajúci prvok
Popis: Skontroluje, či má ListIterator viac prvkov v smere dozadu / dozadu.
# 4) predchádzajúce ()
Prototyp: E predchádzajúci ()
Parametre: NIL
Návratová hodnota: E => predchádzajúci prvok v zozname
Popis: Táto metóda vráti predchádzajúci prvok v zozname pri prechádzaní dozadu a potom posunie kurzor dozadu.
Vyvolaná výnimka: NoSuchElementException - ak ListIterator nemá žiadny ďalší prvok.
# 5) nextIndex ()
Prototyp: int nextIndex ()
Parametre: NIL
Návratová hodnota: int => index prvku, ktorý sa vráti metódou next () alebo veľkosťou zoznamu, ak je ListIterator na konci zoznamu.
Popis: Túto metódu je možné zavolať pred metódou next (). Metóda nextIndex () vracia index prvku, ktorý bude vrátený metódou next (). Ak je ListIterator na konci zoznamu, táto metóda vráti veľkosť zoznamu.
# 6) previousIndex ()
Prototyp: int previousIndex ()
Parametre: NIL
Návratová hodnota: int => index prvku, ktorý sa vráti metódou previous () alebo -1, ak je ListIterator na začiatku zoznamu.
Popis: Túto metódu je možné zavolať pred predchádzajúcou metódou (). Metóda previousIndex () vracia index prvku, ktorý bude vrátený metódou previous (). Ak je ListIterator na začiatku zoznamu, metóda vráti -1.
# 7) odstrániť ()
Prototyp: void remove ()
Parametre: NIL
Návratová hodnota: neplatný
Popis: Metóda remove () odstráni posledný prvok, ktorý bol vrátený metódou previous () alebo next (). Volanie metódy remove () je možné uskutočniť iba raz na volanie metódy next () alebo previous ().
Vyvolaná výnimka:
- UnsupportedOperationException - ListIterator nepodporuje operáciu odstránenia.
- IllegalStateException - Ak je aktuálna operácia v nelegálnom stave, t. J. Ani ďalší, ani predchádzajúci ešte neboli volaní alebo po volaní na nasledujúci alebo predchádzajúci, potom neboli volané ani pridané alebo odstránené.
# 8) sada (E)
Prototyp: neplatná množina (E a)
Parametre: e => nový prvok, ktorým sa má nahradiť starý prvok
Návratová hodnota: neplatný
Popis: Metóda set () nastavuje prvok vrátený metódou previous () alebo next () s novou hodnotou odovzdanou ako argument. Túto metódu je možné zavolať, iba ak metóda add () alebo remove () nie je volaná po poslednom volaní metódy previous () alebo next ().
Vyvolaná výnimka:
- UnsupportedOperationException - ListIterator nepodporuje nastavenú operáciu.
- ClassCastException - ak zadaný prvok nie je možné pridať z dôvodu jeho triedy.
- IllegalArgumentException - ak je pridávaný prvok / argument neplatný alebo neplatný.
- IllegalStateException - Ak je aktuálna operácia v nelegálnom stave, t. J. Ani ďalší, ani predchádzajúci ešte neboli volaní, ani po volaní na nasledujúci alebo predchádzajúci nebol volaný príkaz add alebo remove.
# 9) pridať (E)
Prototyp: void add (E e)
Parametre: e => nový prvok, ktorý sa má pridať do zoznamu
Návratová hodnota: neplatný
Popis: Metóda add () sa používa na pridanie nového prvku do zoznamu. Element sa pridáva tesne pred element, ak by sa vrátil next (), ak existuje, a za element, ktorý by sa vrátila metóda previous ().
Všimnite si, že v dôsledku pridania prvku by nedošlo k nijakej zmene vrátenia hodnoty next (), ale metóda previous () vráti iba pridaný prvok.
ako extrahovať súbory torrentu pomocou 7zip -
Vyvolaná výnimka:
- UnsupportedOperationException - ListIterator nepodporuje metódu pridania.
- ClassCastException, ak je zadaný prvok, ktorý nie je možné pridať z dôvodu jeho triedy.
- IllegalArgumentException, ak je pridávaný prvok / argument neplatný alebo neplatný.
Nasledujúci program Java zobrazuje ukážku všetkých vyššie uvedených metód 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ýkon:
Rozhranie ListIterator v príkladoch Java
Pozrime sa na ďalší príklad použitia ListIterator. V tomto programe máme ArrayList celočíselných hodnôt. Potom pomocou ListIterátora prechádzame zoznamom a zobrazujeme prvky zoznamu.
Tiež v ArrayList vyberieme iba párne prvky a pomocou metód ListIterator ich hodnoty zmeníme na nepárne čí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ýkon:
často kladené otázky
Otázka č. 1) Čo sa myslí pod pojmom iterátor?
Odpoveď: Iterator je rozhranie, ktoré je súčasťou rámca Collection v Jave. Toto rozhranie je súčasťou balíka java.util. Rozhranie iterátora sa používa na iteráciu prostredníctvom zbierky objektov.
Otázka 2) Čo je to rozhranie iterátora v Jave?
Odpoveď: Rozhranie iterátora v Jave sa používa namiesto Enumerácií, ktoré sa predtým používali v rámci Java Collection Framework. Rozhranie iterátora je v Jave od verzie 1.2.
Pomocou tohto rozhrania môžete iterovať cez ľubovoľné kolekcie Java a spracovávať prvky kolekcie.
Otázka č. 3) Aké je použitie metódy listIterator () v Jave?
Odpoveď: Metóda listIterator () patrí do balíka java.util. *. Táto metóda vráti iterátor zoznamu pre konkrétny objekt zoznamu, ktorý ho vyvolal, a je možné ho použiť na prechádzanie zoznamami a na prístup k prvkom. ListIterator funguje iba na implementáciách zoznamu.
ako obrátiť poradie poľa v jave -
Otázka č. 4) Je iterátor trieda alebo rozhranie?
Odpoveď: Iterátor nie je trieda, ale rozhranie v Jave . Rozhranie iterátora môžu implementovať ďalšie triedy a použiť ho na iteráciu prostredníctvom prvkov zoznamu alebo kolekcie.
Otázka č. 5) Koľko typov iterátorov je v Jave?
Odpoveď: Iterátory v Jave sú tri typy:
- Výčty: Toto je rozhranie, ktoré sa používa na čítanie prvkov zo zbierok, ako sú Vector, hashtable atď. Každý prvok je očíslovaný podľa svojej polohy v zbierke.
- Iterátor: Toto rozhranie môžete nazvať univerzálnym, pretože ho môžete použiť na akýkoľvek objekt zbierky, cez ktorý môžete prechádzať zbierkou. Toto je vylepšený výpočet s funkciou odstránenia spolu so schopnosťou čítať prvok.
- ListIterator: ListIterator je rozhranie, ktoré poskytuje obojsmernú iteráciu, tj. Vpred a vzad. ListIterator funguje iba s implementáciami zoznamov vrátane LinkedList, ArrayList atď.
Záver
Rozhranie ListIterator v Jave je odvodené z rozhrania Iterator. Okrem priameho dedenia metód rozhrania Iterator zavádza rozhranie listIterator rôzne vlastné metódy, ktoré môžu programátorovi pomôcť pri vykonávaní obojsmernej iterácie.
V tomto tutoriáli sme diskutovali o diagrame triedy a rôznych metódach rozhrania ListIterator. Videli sme tiež implementáciu týchto metód spolu so spôsobmi prechádzania rôznymi zoznamami.
=> Navštívte tu a pozrite si sériu školení Java pre všetkých.
Odporúčané čítanie
- Príručka k rozhraniu Java a abstraktnej triede
- Výukový program JAVA pre začiatočníkov: viac ako 100 praktických výučbových programov Java Video
- Java Iterator: Naučte sa používať Iterátory v Jave pomocou príkladov
- Výukový program Java Array Length s príkladmi kódu
- Jagged Array In Java - návod s príkladmi
- Obrátiť pole v prostredí Java - 3 metódy s príkladmi
- Ako zoradiť pole v Jave - návod s príkladmi
- Vynikajúce funkcie Java 8 s príkladmi kódu