Java-da ListIterator


Java Java siyahısıBaxılıb 40

Java-da ListIterator bir interface hər iki istiqamətdə bir Siyahı kolleksiyasında gezinmek üçün istifadə etdiyimiz. Əvvəlki təlimdə öyrəndiyimiz Iterator interfeysini genişləndirir. Bu təlimatda Java ListIterator'u ətraflı nümunələrlə müzakirə edəcəyik.

Java ListIterator

Java ListIterator interfeysi JDK 1.2-dən əldə edilə bilər. ListIterator istifadə edərək istənilən növ Siyahı Kolleksiyasını təkrarlamaq üçün istifadə edə bilərik siyahı, ArrayListvə ya LinkedList. Bu uzanır Iterator. Həm irəli, həm də geri istiqamətdə hərəkət etmək üçün ListIterator-dan istifadə edə bilərik. Əməliyyatları oxumaq, əlavə etmək, yeniləmək və silmək üçün də istifadə edə bilərik. ListIterator interfeysindən istifadə etmək üçün java.util.ListIterator paket.

Java ListIterator

Java ListIterator metodları

Aşağıda ListIterator-un dəstəklədiyi metodlar verilmişdir.

ÜsultəsvirParametr
etibarsız əlavə (Object e)Ya növbəti () metodu ilə qaytarılmış elementdən əvvəl, ya da əvvəlki () üsulu ilə qaytarılmış elementdən sonra siyahıya bir element əlavə edir.e - daxil ediləcək element
boolean hasNext ()İrəli istiqamətdə keçmək üçün daha çox element varsa, doğru qayıdır
boolean hasPrevious ()Əks istiqamətdə keçmək üçün daha çox element varsa, doğru qayıdır
Növbəti obyekt ()İrəli istiqamətdə hərəkət edərkən siyahıda növbəti elementi qaytarır.
int nextIndex ()Növbəti elementin indeksini qaytarır
Əvvəlki obyekt ()Siyahını tərs istiqamətdə gəzərkən əvvəlki elementi qaytarır.
int previousIndex ()Əks istiqamətdə hərəkət edərkən əvvəlki elementin indeksini qaytarır
ləğv et ()Növbəti () üsulu və ya əvvəlki () üsulu ilə qaytarılmış elementi silir.
boşluq dəsti (obyekt e)Növbəti () və ya əvvəlki () tərəfindən qaytarılmış elementi göstərilən elementlə əvəz edir.Bu metodu istifadə etmək üçün növbəti () və ya əvvəlki () metodlardan sonra nə add () nə də kaldır () çağırılmamalı idi.e - dəyişdiriləcək element

ListIterator-un işlənməsi

Aşağıda Java ListIterator-un işini təsvir edən addımlar verilmişdir.

  • List Collections-dan hər hansı birini istifadə edərək ListIterator obyekti yaradın. Məsələn: ListIterator<String> iterator_variable = list_variable.listiterator();
  • İrəli istiqamətdə keçmək üçün istifadə edirik hasNext() daxilində metod while siyahıda daha çox element olub olmadığını yoxlamaq üçün loop.
  • Yuxarıda göstərilən şərt doğrudursa, istifadə edərək elementə daxil ola bilərik next() metodu.
  • Geriyə doğru hərəkət etmək üçün hasPrevious() daxilində metod while siyahıda elementlərin olub olmadığını yoxlamaq üçün loop.
  • Yuxarıdakı şərt doğrudursa, elementini istifadə edərək əldə edə bilərik previous() metodu.
  • Elementin indeksinə irəli və geri istiqamətdə daxil olmaq üçün istifadə edə bilərik nextIndex()previousIndex() üsulları.

ListIterator nümunəsi

Ci nümunə aşağıda, müxtəlif Java ListIterator metodlarının istifadəsini nümayiş etdiririk. İrəli istiqamətdə getmək üçün istifadə edirik hasNext şərt yalan qayıdana qədər metod və next ArrayListdəki elementə daxil olmaq üçün metod. İndeks dəyərini almaq üçün nextIndex metod. Aralıq 1-dən başlayır. Son element indeks dəyəri siyahının ölçüsü olacaq, bu halda 4-dür.

Əks istiqamətdə hərəkət etmək üçün istifadə edirik hasPrevious şərt yalan qayıtana qədər. Elementi almaq üçün istifadə edirik previous metodu və indeks dəyərini əldə etmək üçün istifadə edirik previousIndex . Aralıq -1-dən başlayır, yəni ilk indeks dəyəri -1, son element dəyəri isə 2-dir.

import java.util.ArrayList;
import java.util.ListIterator;

public class ListIteratorDemo {

  public static void main(String[] args) {
    ArrayList<String> states = new ArrayList<String>();
    states.add("Delhi");
    states.add("Karnataka");
    states.add("TamilNadu");
    states.add("Hyderabad");
    
    ListIterator l = states.listIterator();
    System.out.println("Forward direction:");
    while(l.hasNext())
      System.out.println("Value: " + l.next() + " Index: " + l.nextIndex());
    
    System.out.println("Reverse direction:");
    while(l.hasPrevious())
      System.out.println("Value: " + l.previous() + " Index: " + l.previousIndex());
  }

}
Forward direction:
Value: Delhi Index: 1
Value: Karnataka Index: 2
Value: TamilNadu Index: 3
Value: Hyderabad Index: 4
Reverse direction:
Value: Hyderabad Index: 2
Value: TamilNadu Index: 1
Value: Karnataka Index: 0
Value: Delhi Index: -1

Nümunə: Java-da ListIterator metodlarını əlavə edin və seçin

Aşağıda istifadə nümunəsidir addset ListIterator metodları. İstifadə etdikdə add()metoddan əvvəl yeni dəyəri əlavə edir next() metod çağırışı. Buna görə ilk mövqe olaraq “Kerala” dəyərini əlavə edir. Biz çağırdığımızda set() metod, sonuncunun dəyərini yeniləyir next() metod deyilir. Bu vəziyyətdə “Hyderabad” dəyərini “Maharashtra” ilə əvəz edir.

Bu dəyərləri ya tərs istiqamətdə hərəkət etməklə, ya da ArrayList dəyişənini yazmaqla əldə edə bilərik.

import java.util.ArrayList;
import java.util.ListIterator;

public class ListIteratorDemo {

  public static void main(String[] args) {
    ArrayList<String> states = new ArrayList<String>();
    states.add("Delhi");
    states.add("Karnataka");
    states.add("TamilNadu");
    states.add("Hyderabad");
    
    ListIterator<String> l = states.listIterator();
    System.out.println("Forward direction:");
    l.add("Kerala");
    while(l.hasNext()) {
      System.out.println(l.next());
    }
    l.set("Maharashtra");	
    System.out.println("Updated States List: " + states);
    System.out.println("Reverse direction:");
    while(l.hasPrevious()) {
      System.out.println(l.previous());
    }
  }

}
Forward direction:
Delhi
Karnataka
TamilNadu
Hyderabad
Updated States List: [Kerala, Delhi, Karnataka, TamilNadu, Maharashtra]
Reverse direction:
Maharashtra
TamilNadu
Karnataka
Delhi
Kerala

Nümunə: Java-da ListIterator metodunu silin

Aşağıda remove ListIterator-dakı metod. Elementin dəyəri 2-dirsə, elementi çıxarırıq. Yenilənmiş siyahıda 2 dəyərinin silindiyini görə bilərik.

import java.util.ListIterator;
import java.util.LinkedList;

public class RemoveListIterator {

  public static void main(String[] args) {
    LinkedList<Integer> num = new LinkedList<Integer>();
    for(int i=0;i<5;i++)
      num.add(i);
    System.out.println("Original numbers: " + num);
    
    ListIterator<Integer> li = num.listIterator();
    while(li.hasNext()) {
      int val = li.next();
      if(val == 2)
        li.remove();
    }
    System.out.println("List after remove: " + num);

  }

}
Original numbers: [0, 1, 2, 3, 4]
List after remove: [0, 1, 3, 4]

Misal: ListIterator indeksi ilə

ListIterator metodundan istifadə edərkən indeks dəyərini də təyin edə bilərik. Bu, göstərilən indeksdən başlayaraq elementləri təkrarlaya biləcəyimiz deməkdir. Aşağıdakı nümunədə, indeks 2-dən təkrarlanırıq. Buna görə dəyərləri Göydən yazdırır.

import java.util.ListIterator;
import java.util.ArrayList;

public class ListIteratorIndex {

  public static void main(String[] args) {
    ArrayList<String> colors = new ArrayList<String>();
    colors.add("Red");
    colors.add("Green");
    colors.add("Blue");
    colors.add("Pink");
    colors.add("Orange");
    
    ListIterator<String> li = colors.listIterator(2);
    System.out.println("Display the values from index 2:");
    while(li.hasNext())
      System.out.println(li.next());

  }

}
Display the values from index 2:
Blue
Pink
Orange

ListIterator-un Java-dakı üstünlükləri

  • İki yönlü naviqasiyaya imkan verir
  • Oxumaq, əlavə etmək, yeniləmək və silmək kimi bütün əməliyyatları dəstəkləyir.
  • Metod adları kiçikdir və başa düşülməsi asandır.

Java-da ListIterator-un məhdudiyyətləri

ListIterator-da istisnalar

Aşağıda istisnalar Java ListIterator interfeysindən istifadə zamanı baş verə biləcək:

  • NoSuchElementException - istifadə edərkən təkrarlamaq üçün heç bir element olmadıqda next() metodu.
  • DəstəklənməyənOperationException - Təkrarlayıcı dəstəkləmirsə set() or add() metodu.
  • ClassCastException - Bu set() or add() metod, elementin sinfi siyahıya əlavə edilməsinə mane olarsa.
  • Qeyri-qanuni sənəd - Bu set() or add() metodu, elementin bəzi cəhətləri siyahıya əlavə etməsini maneə törədirsə.

Iterator və ListIterator arasındakı fərq

İteratorListIterator
Universal iteratordurUniversal iterator deyil
Hər növ Kolleksiya üçün istifadə edilə bilərYalnız List tətbiq sinifləri üçün istifadə edilə bilər
Yalnız oxuma və silmə əməliyyatını dəstəkləyirƏməliyyatlar əlavə etmək, yeniləmək, oxumaq və silməyi dəstəkləyir.
Yalnız irəli naviqasiya üçün istifadə edilə bilərİrəli və əks istiqamətdə naviqasiya üçün istifadə edilə bilər
İki yönlü təkrarlayıcı deyilİki yönlü təkrarlayıcıdır
İterator () metodundan istifadə edirikListiterator () metodundan istifadə edirik.
Təkrarlanma üçün indeks təyin edə bilmərikTəkrarlamaq üçün indeks təyin edə bilərik

arayış

Şərh yaz

Translate »
1