Millised on viisid, kuidas Java-s kollektsioone läbi käia?
sobes.tech AI
Vastus AI-lt
Java keeles on mitmeid viise, kuidas iteratsioonide teha kogumite üle:
-
fortsükkel indeksiga (sobib kogumitele, mis toetavad indekspõhist juurdepääsu, näiteksArrayList,LinkedList):
Sobib kogumitele, kus indeksi põhine juurdepääs on tõhus.// Näide ArrayList-i iteratsioonist 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); } -
Täiustatud
for-tsükkel (Enhanced for loop / for-each loop):
Kõige levinum ja mugavaim viis enamikul juhtudel. Sobib kõigile kogumitele, mis implementeerivadIterableliidest.// Näide ArrayList-i iteratsioonist for-each abil ArrayList<String> list = new ArrayList<>(); list.add("A"); list.add("B"); list.add("C"); for (String element : list) { System.out.println(element); } -
Iterator-i kasutamine:
Paindlikum viis, mis võimaldab elemente eemaldada iteratsiooni ajal. Sobib kõigile kogumitele.// Näide `Iterator`-i kasutamisest 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); // Võimalik ohutult eemaldada elemente // if (element.equals("B")) { // iterator.remove(); // } } -
ListIterator-i kasutamine (sõnaraamatute jaoks):
Spetsialiseeritud iterator, mis implementeeribList-liidest. Võimaldab liikuda nii edasi kui tagasi ning lisada ja muuta elemente.// Näide `ListIterator`-i kasutamisest 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); } // Tagasi liikumise näide while (listIterator.hasPrevious()) { String element = listIterator.previous(); System.out.println(element); } -
Streams API (alates Java 8):
Funktsionaalne lähenemine lambdaväljenditega. Võimaldab teha operatsioone kogumi elementidega (filtreerimine, teisendamine jne) deklaratiivses stiilis. Iteratsioon toimub "sisemiselt" voolu kaudu.// Näide Streams API kasutamisest ArrayList<String> list = new ArrayList<>(); list.add("A"); list.add("B"); list.add("C"); list.stream() .forEach(element -> System.out.println(element)); // Filtreerimise ja teisendamise näide // list.stream() // .filter(element -> element.startsWith("A")) // .map(String::toLowerCase) // .forEach(System.out::println);
Valik meetodist sõltub konkreetse ülesande, kogumi tüübi ja nõutava jõudluse järgi. Enamikel juhtudel on kõige mugavam kasutata täiendatud for-tsüklit. Kui on vaja elemente eemaldada iteratsiooni ajal, kasutage Iterator-it. Sõnaraamatute puhul, kus on vaja kahemõõtmelist iteratsiooni, sobib ListIterator. Streams API pakub võimsaid võimalusi andmete töötlemiseks deklaratiivses stiilis.