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
fordövrü (məsələn,ArrayList,LinkedListkimi 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ş
fordövrü (Enhanced for loop / for-each loop):
Ən çox istifadə olunan və rahat üsuldur.Iterableinterfeysini 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); } -
Iteratoristifadə 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(); // } } -
ListIteratoristifadə (siyahılar üçün):
Listinterfeysini 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.