Sobes.tech
Junior

Java-da kolleksiyalar üzərində təkrarlamağın yolları hansılardır?

sobes.tech Süni İntellekt

AI-dan cavab

Java-da kolleksiyalar üzərində iterasiya etmək üçün bir neçə üsul mövcuddur:

  • İndeks istifadə edən for dövrü (məsələn, ArrayList, LinkedList kimi indeksə çıxışı dəstəkləyən kolleksiyalar üçün):
    Elementlərə indeks vasitəsilə çıxışın effektiv olduğu kolleksiyalar üçün uyğundur.

    // ArrayList üzərində iterasiya nümunəsi
    ArrayList<String> list = new ArrayList<>();
    list.add("A");
    list.add("B");
    list.add("C");
    
    for (int i = 0; i < list.size(); i++) {
        String element = list.get(i);
        System.out.println(element);
    }
    
  • Genişləndirilmiş for dövrü (Enhanced for loop / for-each loop):
    Ən çox istifadə olunan və rahat üsuldur. Iterable interfeysini həyata keçirən hər hansı kolleksiya üçün uyğundur.

    // ArrayList üzərində for-each ilə iterasiya nümunəsi
    ArrayList<String> list = new ArrayList<>();
    list.add("A");
    list.add("B");
    list.add("C");
    
    for (String element : list) {
        System.out.println(element);
    }
    
  • Iterator istifadə edərək iterasiya:
    Daha çevik üsul, iterasiya zamanı elementləri silməyə imkan verir. Bütün kolleksiyalar üçün uyğundur.

    // Iterator istifadə edərək iterasiya nümunəsi
    ArrayList<String> list = new ArrayList<>();
    list.add("A");
    list.add("B");
    list.add("C");
    
    Iterator<String> iterator = list.iterator();
    while (iterator.hasNext()) {
        String element = iterator.next();
        System.out.println(element);
        // Elementləri təhlükəsiz şəkildə silmək mümkündür
        // if (element.equals("B")) {
        //     iterator.remove();
        // }
    }
    
  • ListIterator istifadə (siyahılar üçün):
    List interfeysini həyata keçirən kolleksiyalar üçün xüsusi iterator. İrəli və geri hərəkət etməyə, elementləri əlavə və dəyişdirməyə imkan verir.

    // ListIterator istifadə nümunəsi
    ArrayList<String> list = new ArrayList<>();
    list.add("A");
    list.add("B");
    list.add("C");
    
    ListIterator<String> listIterator = list.listIterator();
    while (listIterator.hasNext()) {
        String element = listIterator.next();
        System.out.println(element);
    }
    // Geri istiqamətdə iterasiya nümunəsi
    while (listIterator.hasPrevious()) {
        String element = listIterator.previous();
        System.out.println(element);
    }
    
  • Streams API (Java 8-dən etibarən):
    Funksional yanaşma, lambda ifadələri ilə. Kolleksiyadakı elementlər üzərində əməliyyatlar həyata keçirməyə imkan verir (filtrləmə, çevirmə və s.) deklarativ tərzdə. Iterasiya "daxili" şəkildə axın daxilində həyata keçirilir.

    // Streams API istifadə nümunəsi
    ArrayList<String> list = new ArrayList<>();
    list.add("A");
    list.add("B");
    list.add("C");
    
    list.stream()
        .forEach(element -> System.out.println(element));
    
    // Filtrləmə və çevirmə nümunəsi
    // list.stream()
    //     .filter(element -> element.startsWith("A"))
    //     .map(String::toLowerCase)
    //     .forEach(System.out::println);
    

Ən uyğun üsul konkret tapşırığa, kolleksiya növünə və performans tələblərinə görə seçilir. Əksər hallarda genişləndirilmiş for dövrü ən rahat seçimdir. Əgər iterasiya zamanı elementləri silmək lazımdırsa, Iterator istifadə olunmalıdır. Siyahılar üçün, iki istiqamətli iterasiya tələb olunursa, ListIterator uyğundur. Streams API isə məlumatların funksional tərzdə işlənməsi üçün güclü imkanlar təqdim edir.