ArrayList yra dalis surinkimo sistema ir yra java.util pakete. Tai suteikia mums dinaminius „Java“ masyvus. Tačiau jis gali būti lėtesnis nei standartiniai masyvai, bet gali būti naudingas programose, kuriose reikia daug manipuliuoti masyve. Ši klasė randama java.util paketą.
Įvedus ir atnaujinus java versijas, pasiekiami naujesni metodai, tarsi iš „Java8“ matome, kad suvokiamos lambda išraiškos ir srautų koncepcijos anksčiau nebuvo prieinamos, nes jos buvo pristatytos 8 versijoje.
Metodai:
1 milijonas skaitmenimis
- Naudojant kilpoms
- Naudojant, kol
- Naudojant už kiekvieną kilpą
- Iteratoriaus naudojimas
- Lambda išraiškų naudojimas (tik po Java8)
- Surašymo sąsajos naudojimas
Aptarkime šiuos metodus, iš kurių iš karto galime suprasti, kad trys metodai yra tiesiog naivūs metodai, o tolesni metodai yra šiek tiek optimizuoti. Nepamirškite čia, nors elementų perėjimas yra mažesnis, mes paprastai linkę kartoti taikydami naivų metodą, tik jei įterpiami elementai yra dideli, tada naudojame optimalius metodus. Greitai apibendrinkime kiekvieną iš aukščiau paminėtų metodų.
1 būdas: Naudojant kilpą
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 skaičiai = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8); // Iteravimas naudojant for ciklus for (int i = 0; i< numbers.size(); i++) // Printing and display the elements in ArrayList System.out.print(numbers.get(i) + ' '); } }> Išvestis
1 2 3 4 5 6 7 8>
2 būdas: Naudojant ciklą while
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 = naujas ArrayList (); // Elementų įtraukimas į ArrayList // naudojant add() metodą al.add(3); al.add(1); al.add(7); al.add(20); al.add(5); // 1 veiksmas: kintamojo nustatymas ir inicijavimas // pagal while ciklo sintaksę // Iš pradžių deklaruojama ir nustatoma int val = 0; // 2 veiksmas: sąlyga // Kol mūsų skaitiklio kintamasis bus mažesnis nei dydis // ArrayList while (al.size()> val) { // Elemento, kuris yra aukščiau, spausdinimas // sąlyga true System.out.println(al .get(val)); // 3 veiksmas: sąlygos užbaigimas didinant // mūsų skaitiklis kiekvienoje iteracijoje val++ ; } } }> Išvestis
3 1 7 20 5>
3 būdas: Naudojimas kiekvienai kilpai
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 skaičiai = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8); // Kiekvienam ciklui kartoti ArrayList for (Sveikasis skaičius i : skaičiai) // ArrayList elementų spausdinimas System.out.print(i + ' '); } }>>
Išvestis 1 2 3 4 5 6 7 8>
4 būdas: Iteratoriaus naudojimas
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 skaičiai = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8); // ArrayList kartojimas naudojant Iterator Iterator it = numbers.iterator(); // Išliks teisinga, kol sąraše lieka vienas elementas // while (it.hasNext()) // Spausdinti ArrayList elementus System.out.print(it.next() + ' '); } }>>
Išvestis 5 būdas: Lambda išraiškų naudojimas 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 skaičiai = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8); // Skaičių spausdinimas naudojant lambda išraiškas // vėliau buvo pristatytas java8 numbers.forEach(number->System.out.println(number)); } }>>
Išvestis 6 būdas: Surašymo sąsajos naudojimasJava // 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 = naujas ArrayList (); // Elementų įtraukimas į ArrayList al.add(34); al.add(12); al.add(34); al.add(23); al.add(54); // Surašymo objekto gavimas Enumeration e = Collections.enumeration(al); // Iki elementų yra, while (e.hasMoreElements()) // Spausdinti elementus naudojant nextElement() metodą System.out.println(e.nextElement()); } }>>
Išvestis Dabar tai yra dar vienas straipsnio priedas, nes baigėme aptarti visus metodus, kurie gali būti naudojami elementams kartoti. Iki šiol mes perėjome tik įvesties elementus ir nematėme perėjimo, kas būtų, jei žaistume su elementais, todėl svarstome Pavyzdys
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 = naujas ArrayList (); al.add(10); al.add(20); al.add(30); al.add(1); al.add(2); // Pašalinkite elementus, mažesnius nei 10, naudodami // Iterator.remove() Iterator itr = al.iterator(); while (itr.hasNext()) { int x = (Sveikasis skaičius)itr.next(); jei (x< 10) itr.remove(); } System.out.println('Modified ArrayList : ' + al); } }>
Išvestis Elementų pašalinimas važiavimo metu: Nerekomenduojama naudoti ArrayList.remove(), kai kartojama per elementus. Tai gali sukelti ConcurrentModificationException (Atsižvelgti į tai pavyzdinei programai su šia išimtimi). Kai kartojama per elementus, rekomenduojama naudoti Iterator.remove() metodas.