ArrayList on osa keräyskehys ja se on java.util-paketissa. Se tarjoaa meille dynaamisia taulukoita Javassa. Se voi kuitenkin olla hitaampi kuin tavalliset taulukot, mutta siitä voi olla apua ohjelmissa, joissa taulukkoa tarvitaan paljon. Tämä luokka löytyy java.util paketti.
Java-versioiden käyttöönoton ja päivitysten myötä uudemmat menetelmät ovat saatavilla, ikään kuin näemme Java8:sta havaitsevat lambda-lausekkeet ja -virrat -konseptit eivät olleet saatavilla ennen sitä, koska ne esiteltiin java-versiossa8.
Menetelmät:
matriisin viipalointi java
- Käyttö silmukoille
- Käyttäminen while
- For-each silmukan käyttäminen
- Iteratorin käyttö
- Lambda-lausekkeiden käyttäminen (vain Java8:n jälkeen)
- Luetteloliittymän käyttö
Keskustellaanpa näistä menetelmistä, joista voimme heti havaita, että aloittavat kolme menetelmää ovat yksinkertaisesti naiiveja lähestymistapoja ja eteenpäin menevät menetelmät sisältävät jonkin verran optimointia. Muista, että vaikka elementtien läpikulku on pienempi, meillä on yleensä tapana iteroida naiivilla lähestymistavalla vain, jos lisättävien elementtien koko on suuri, käytämme optimaalisia lähestymistapoja. Päätämme kaikki yllä olevista lähestymistavoista nopeasti.
Tapa 1: Silmukan käyttö
Java
// Java program to iterate over an ArrayList // Using for loop // Importing all utility classes import java.util.*; // Main class class GFG { // Main driver method public static void main(String[] args) { // Creating and initializing the ArrayList // Declaring object of integer type List numerot = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8); // Iterointi käyttämällä for-silmukkaa for (int i = 0; i< numbers.size(); i++) // Printing and display the elements in ArrayList System.out.print(numbers.get(i) + ' '); } }> Lähtö
1 2 3 4 5 6 7 8>
Tapa 2: Käytetään while-silmukkaa
Java // Java Program to Illustrate ArrayList // Using While Loop // Importing required classes import java.util.ArrayList ; // Main class public class GFG { // Main driver method public static void main(String[] args) { // Creating and initializing the ArrayList // Declaring object of integer type ArrayList al = uusi ArrayList (); // Elementtien lisääminen ArrayListiin // add()-menetelmällä al.add(3); al.add(1); al.add(7); al.add(20); al.add(5); // Vaihe 1: Muuttujan asettaminen ja alustus // while-silmukan syntaksin mukaan // Aluksi ilmoittaminen ja asettaminen int val = 0; // Vaihe 2: Condition // Kunnes laskurimuuttujamme on pienempi kuin koko // ArrayList while (al.size()> val) { // Tulostetaan elementti, joka pitää yllä // ehto true System.out.println(al .get(val)); // Vaihe 3: Ehdon lopettaminen lisäämällä // laskurimme jokaisessa iteraatiossa val++ ; } } }> Lähtö
3 1 7 20 5>
Tapa 3: Käyttö jokaiselle silmukalle
Java // Java Program to Iterate over Arraylist // using for Each loop // Importing all utility classes import java.util.*; // Main class class GFG { // Main driver method public static void main(String[] args) { // Declaring and initializing ArrayList List numerot = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8); // Jokaiselle silmukalle ArrayListin iterointia varten (Kokonaisluku i : numerot) // ArrayList:n elementtien tulostaminen System.out.print(i + ' '); } }> Lähtö
1 2 3 4 5 6 7 8>
Tapa 4: Iteratorin käyttö
Java
// Java program to iterate over an ArrayList // Using Iterator // Importing all utility classes import java.util.*; // Main class class GFG { // Main driver method public static void main(String[] args) { // Declaring and initializing ArrayList List numerot = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8); // ArrayListin iterointi Iterator Iteratorin avulla it = numbers.iterator(); // Pätee, kunnes luettelossa on yksi elementti // jäljellä while (it.hasNext()) // Tulosta ArrayList-elementit System.out.print(it.next() + ' '); } }> Lähtö
1 2 3 4 5 6 7 8>
Menetelmä 5: Lambda-lausekkeiden käyttö
Java // Java program to iterate over an arraylist // using Iterator in Java8 with Lambda Expression // Importing all utility classes import java.util.*; // Main class class GFG { // Main driver method public static void main(String[] args) { // Declaring and initializing ArrayList // Custom input elements List numerot = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8); // Numeroiden tulostaminen lambda-lausekkeilla // otettiin käyttöön myöhemmin java8:ssa numbers.forEach(number->System.out.println(number)); } }> Lähtö
1 2 3 4 5 6 7 8>
Menetelmä 6: Luetteloliittymän käyttö
Java // Java Program to Iterate over ArrayList elements // Using Enumeration // Importing required classes import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; // Main class class GFG { // Main driver method public static void main(String[] args) { // Creating an ArrayList ArrayList al = uusi ArrayList (); // Elementtien lisääminen ArrayListiin al.add(34); al.add(12); al.add(34); al.add(23); al.add(54); // Luetteloobjektin saaminen Enumeration e = Collections.enumeration(al); // Till-elementit ovat olemassa while (e.hasMoreElements()) // Tulosta elementit nextElement()-metodilla System.out.println(e.nextElement()); } }> Lähtö
34 12 34 23 54>
Nyt se on lisälisä artikkeliin, koska olemme päässeet keskustelemaan kaikista menetelmistä, joita voidaan käyttää elementtien iterointiin. Toistaiseksi olemme kulkeneet vain syöteelementtien yli emmekä ole nähneet läpikulkua, mitä jos leikimme elementeillä, joten harkitsemme
Esimerkki
Java // Java program to demonstrate Working of // Iterator.remove() on Arraylist // Importing utility classes import java.util.List; import java.util.ArrayList; import java.util.Iterator; // Main class public class GFG { // Main driver method public static void main(String[] args) { // Creating a List with referenceto ArrayList List al = uusi ArrayList (); al.add(10); al.add(20); al.add(30); al.add(1); al.add(2); // Poista alle 10 elementit käyttämällä // Iterator.remove() Iterator itr = al.iterator(); while (itr.hasNext()) { int x = (Kokonaisluku)itr.seuraava(); jos (x< 10) itr.remove(); } System.out.println('Modified ArrayList : ' + al); } }> Lähtö
Modified ArrayList : [10, 20, 30]>
Kohteiden poistaminen läpikäynnin aikana: Ei ole suositeltavaa käyttää ArrayList.remove():ta, kun iteroidaan elementtien yli. Tämä voi johtaa ConcurrentModificationException (Viitata Tämä esimerkkiohjelmalle tätä poikkeusta lukuun ottamatta). Kun iteroidaan elementtien yli, on suositeltavaa käyttää Iterator.remove() menetelmä.