Java >> Java tutorial >  >> Tag >> ArrayList

Print ArrayList i Java forklaret med eksempler

Vi vil se på, hvordan du udskriver en ArrayList i Java i denne vejledning. Array-datastrukturen i Java er meget stærk, men den har sine begrænsninger. For at omgå disse begrænsninger blev ArrayList-datastrukturen oprettet.

Inden vi går i gang med vores emne, så lad os give dig en hurtig primer på ArrayList.

Introduktion til ArrayList

ArrayList er en mere avanceret variant af Array, da den understøtter arrays, der kan ændres størrelse. Bortset fra det er ArrayList en Java-samling, der implementerer Java List. Ydermere er ArrayList den avancerede array-version, men den er alligevel mindre effektiv i tidsoptimering end grundlæggende arrays.

ArrayList-klassen er desuden bygget på en Array-datastruktur og implementerer List-grænsefladen. På grund af den anvendelighed og fleksibilitet, den giver, er den meget brugt. De fleste udviklere foretrækker Arraylist frem for Array, fordi det er et bedre alternativ til almindelige Java-arrays. ArrayList-implementeringen af ​​List-grænsefladen er en array-implementering, der kan ændres. Eventuelle valgfri listeoperationer implementeres, og alle elementer, inklusive null, er tilladt.

Vi holdt det lige og kort, fordi vi ikke fokuserede på ArrayList-detaljer.

Sådan udskrives ArrayList-elementer i Java

Ja, du læste det rigtigt. ArrayList-elementer kan heldigvis ikke udskrives på en enkelt metode. Selvom der er snesevis af muligheder, vil vi undersøge de otte vigtigste, mens vi illustrerer ved hjælp af forskellige eksempler i denne vejledning. For at udskrive elementer skal du først bygge en String ArrayList og indsætte data som strenge i den, og derefter vise dem ved hjælp af en af ​​følgende metoder:

  • For-loop
  • For hver sløjfe
  • Brug af Iterator
  • Brug af List-iterator
  • Brug af Stream
  • ved at bruge toString()
  • Brug af Arrays-klassen
  • Brug af id'er

En streng ArrayList ses nedenfor. Ved at bruge add()-metoden i ArrayList oprettede vi et listeobjekt og indsatte navnene på computerfirmaer.

ArrayList arrProgrammingLanguages=new ArrayList();
arrProgrammingLanguages.add("Google");
arrProgrammingLanguages.add("Microsoft");
arrProgrammingLanguages.add("Yahoo");
arrProgrammingLanguages.add("Amazon");
arrProgrammingLanguages.add("Uber");
arrProgrammingLanguages.add("Twitter");
arrProgrammingLanguages.add("Meta");

Brug for loop

//using for loop

System.out.println("Using For Loop\n ");
for (int i = 0; i < arrProgrammingLanguages.size();i++)
{ 		      
  System.out.println(arrProgrammingLanguages.get(i)); 		
}   

Vi får længden af ​​ArrayList ved hjælp af dens size() metode, op til hvilken vi skal hente elementer til brug for løkken. Vi brugte ArrayLists get(i)-metode til at hente dataene i ArrayLists indekser.

Brug af iterator

//using iterator
System.out.println("\nUsing the Iterator");
Iterator iterator=arrProgrammingLanguages .iterator();
while(iterator .hasNext())
{
  String obj = iterator.next();
  System.out.println(obj);
}

Iteratorer bruges til at hente elementer i Java-samlingsrammerne. Iterator()-metoden i ArrayList returnerer en iterator for listen.hasNext() er en metode i Iteratoren, der kontrollerer, om det næste element er tilgængeligt. Iterators next()-metode returnerer også elementer.

For at krydse ArrayList konstruerede vi en while-løkke. Vi bruger metoden hasNext() i løkken for at se, om det næste element er tilgængeligt. HasNext()-metoden for en iterator returnerer den boolske værdi true eller false. Hvis hasNext() returnerer true, bruger løkken metoden Iterator next() til at hente ArrayList-medlemmerne og udskriver dem ved hjælp af System.out. println-metoden er en udskrivningsmetode. Der er ikke flere elementer på listen, hvis hasNext() returnerer falsk.

Brug for hver sløjfe

//using for-each loop
System.out.println("\nUsing for-each loop\n");		
for (String strVar : arrProgrammingLanguages)
{ 		      
  System.out.println(strVar); 		
}

Det samme for loop udtrykkes forskelligt her, ved at bruge Javas for-each loop eller advance loop-funktion. Denne løkke henter hvert element fra ArrayList-objektet ét ad gangen.

Brug af list-iterator

//Using list iterator
litrVar=arrProgrammingLanguages.listIterator();

System.out.println("\n Using the list iterator");
while(litrVar.hasNext()){
  System.out.println(litrVar.next());
}

Vi kan også bruge ListIterator til at krydse ArrayLists elementer. HasNext()-metoden kontrollerer, om et element er til stede, og next()-metoden henter ArrayList-indgange. ListIterator er identisk med iteratoren. ListIterator er dog tovejs, mens iteratoren er ensrettet.

Den eneste forskel er, at vi først skal starte den med null i tilfælde af en listeiterator.

ListIterator<String> litrVar = null;

Brug af Stream i Java til at udskrive en ArrayList

For at udskrive en ArrayList i Java kan du bruge foreach loop i Java 8 Stream.

package org.under.codeunderscored;
 
import java.util.ArrayList;
 
public class PrintArrayListMain {
 
    public static void main(String args[])
    {
        ArrayList<String> codingList = new ArrayList<>();
 
        fruitList.add("Java");
        fruitList.add("Python");
        fruitList.add("JavaScript");
        fruitList.add("GO");
        System.out.println("Elements of  the given ArrayList are:");
 
        codingList.stream().forEach(System.out::println);
 
    }
}

Brug af toString() til at udskrive ArrayList i java

Du kan bruge dens reference, hvis du blot ønsker at udlæse ArrayList på konsollen. Internt vil den bruge funktionen toString() af typen ArrayList (String i dette eksempel).

package org.under.codeunderscored;
 
import java.util.ArrayList;
 
public class PrintArrayListMain {
 
    public static void main(String args[])
    {
        ArrayList<String> codingList = new ArrayList<>();
 
        codingList.add("Python");
        codingList.add("Java");
        codingList.add("JavaScript");
        codingList.add("Go");
        System.out.println("Elements of the ArrayList include:"+codingList);
    }
}

Brug af Arrays-klassen til at udskrive ArrayList Elements i Java

For at udskrive elementerne i en ArrayList skal du konvertere den til en matrix og bruge toString-funktionen i Arrays-klassen.

System.out.println("Print the Arraylist using the Arrays.toString method");
System.out.println( The Arrays.toString(aListDays.toArray()) );

Hvis du ønsker at slippe af med firkantede parenteser, skal du bruge replaceAll-metoden beskrevet nedenfor.

System.out.println(Arrays.toString(aListDays.toArray()) .replaceAll("[\\[\\]]", "") );

Udskriv Arraylist i Java ved hjælp af ID'er

Hvert ArrayList-element har et unikt ID, der kan opnås ved at udskrive ArrayList uden at bruge nogen metoder såsom toString (). Den vil vise den rå ArrayList med vare-id'erne, som vist i outputtet fra eksemplet:

import java.util.ArrayList;

public class Codeunderscored {

    public static void main(String[] args) {

        ArrayList<ModelClass> modelList;

        ModelClass modelOne = new ModelClass();
        ModelClass modelTwo = new ModelClass();
        ModelClass modelThree = new ModelClass();

        modelOne.setName("Joy");
        modelTwo.setName("Ann");
        modelThree.setName("Mike");

        modelList = new ArrayList<ModelClass>();
        modelList.add(modelOne);
        modelList.add(modelTwo);
        modelList.add(modelThree);

        System.out.println(modelList);

    }
}

class ModelClass{

    String name;
    void setName(String name){
        this.name = name;
    }

}

Fuldstændig Java-kode til udskrivning af ArrayList Elements på forskellige måder

Følgende er den komplette kode til udskrivning af alle elementer i ArrayList ved hjælp af forskellige teknikker:

import java.util.*;
import java.util.ArrayList;
import java.util.Iterator;

public class Codeunderscored {

	public static void main(String[] args) {
	
		 ListIterator litrVar = null;
		ArrayList arrMonths=new ArrayList();
		arrMonths.add("January");
		arrMonths.add("February");
		arrMonths.add("March");
		arrMonths.add("April");
		arrMonths.add("May");
		arrMonths.add("June");
		arrMonths.add("July");
		
		//using for loop
		System.out.println("Using the For Loop\n ");
	      for (int i = 0; i < arrMonths.size();i++)
	      { 		      
	          System.out.println(arrMonths .get(i)); 		
	      }   		
		
		//using for-each loop
	      System.out.println("\nUsing for-each loop\n");		
	      for (String strVar : arrMonths)
	      { 		      
	           System.out.println(strVar); 		
	      }

	      //using iterator
	      System.out.println("\nUsing Iterator");
	      Iterator itrVar=arrMonths .iterator();
	      while(itrVar.hasNext())
	        {
	          String objVar = itrVar.next();
	          System.out.println(objVar);
	        }
	    //Using list iterator
	      litrVar=arrMonths .listIterator();
	   
	      System.out.println("\n Using the given list iterator");
	      while(litrVar.hasNext()){
	         System.out.println(litrVar.next());
	      }
	      
	}

}

Lad os sige, at du har tre eller flere ArrayList. Er det nødvendigt for dig at omskrive koden for at udlæse elementerne? NEJ, du kan etablere en enkelt metode til at udskrive mange ArrayList og kalde det for hver ArrayList individuelt, som vist nedenfor.

Kodeeksemplet nedenfor har to array-lister:"dage" og "frugter." Begge array-lister udskrives ved hjælp af den enkelte metode "printArrayListElements(ArrayList a)".

import java.util.ArrayList;
public class Codeunderscored {

	public static void main(String[] args) {

		ArrayList citiesArr = new ArrayList();
		citiesArr.add("New York");
		citiesArr.add("London");
		citiesArr.add("Paris");
		citiesArr.add("Tokyo");
		citiesArr.add("Nairobi");
		citiesArr.add("Armsterdam");
		citiesArr.add("Zurich");

		System.out.println("Cities Array List:");
		printArrayListElements(citiesArr);

		ArrayList compCompanies = new ArrayList();
		compCompanies.add("Amazon");
		compCompanies.add("Apple");
		compCompanies.add("Alibaba");

		System.out.println("Computer Companies Array List:");
		// print computer companies array list
		printArrayListElements(compCompanies);

	}

	public static void printArrayListElements(ArrayList a) {
		for (int i = 0; i < a.size(); i++) {
			System.out.println(a.get(i));
		}
	}
}

Udskrivning af en ArrayList over brugerdefinerede objekter

Hvis du har et brugerdefineret objekt i en ArrayList, skal du muligvis implementere funktionen toString() i det objekt for at vise ArrayList korrekt. Lad os se på et eksempel:

Opret en medarbejderklasse med karakteristika for navn og alder.

package org.under.codeunderscored;
 
public class Employee {
    String name;
    int age;
 
    public Employee(String name, int age) {
        this.name = name;
        this.age = age;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public int getAge() {
        return age;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
}

PrintArrayListEmployeeMain.java er hovedklassen, der vil blive brugt til at udskrive ArrayList.

package org.arpit.codeunderscored;
 
import java.util.ArrayList;
 
public class PrintArrayListEmployeeMain {
 
    public static void main(String[] args) {
        ArrayList<Employee> employeesList=new ArrayList<>();
 
        Employee empOne=new Employee("Mike",52);
        Employee empTwo=new Employee("Ann",31);
        Employee empThree=new Employee("Joy",20);
        Employee empFour=new Employee("Moses",11);
 
        employeesList.add(empOne);
        employeesList.add(empTwo);
        employeesList.add(empThree);
        employeesList.add(empFour);
 
        System.out.println("Employees List:"+employeesList);
    }
}

Fordi toString()-metoden ikke blev implementeret i Employee-klassen, er outputtet en ulæselig streng. Lad os sætte toString()-funktionen i handling i Employee-klassen.

package org.under.codeunderscored.entry;
 
public class Employee {
    String name;
    int age;
 
    public Employee(String name, int age) {
        this.name = name;
        this.age = age;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public int getAge() {
        return age;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
 
    @Override
    public String toString() {
        return "Employee{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

Gentag nu PrintArrayListEmployeeMain.java for at få andre resultater. Derudover kan vi nu forståeligt nok udskrive ArrayList, som du kan se.

Eksempel:Brug for loop til at udskrive ArrayList i Java

Vi itererer op til størrelsen() af Arraylist i for-løkken. Vi henter individuelle elementer ved hjælp af funktionen get() i ArrayList i hver iteration. Til sidst vil vi udlæse disse dele ved hjælp af System.out.println instruktioner.

package org.under.codeunderscored;
 
import java.util.ArrayList;
 
public class PrintArrayListMain {
 
    public static void main(String[] args) {
        ArrayList<String> arrCars = new ArrayList<>();
 
        arrCars.add("Mercedes Benz");
        arrCars.add("Rolls Royce");
        arrCars.add("Tesla");
        arrCars.add("Ferrari");
 
        System.out.println("Elements of the ArrayList are:");
        for (int i = 0; i < arrCars.size(); i++) {
            System.out.println(arl.get(i) + " ");
        }
    }
}

Eksempel:Udskriv ArrayList i Java ved hjælp af for-each Loop

Den eneste forskel mellem denne procedure og den forrige er, at vi vil bruge den avancerede loop-metode. Så i stedet for at bruge standarden for loop, bruger vi dens avancerede modstykke, som har et par flere funktioner. Tag et kig på kodesyntaksen nedenfor:

package org.under.codeunderscored;
 
import java.util.ArrayList;
 
public class PrintArrayListMain {
 
    public static void main(String[] args) {
        ArrayList<String> arrayCountries = new ArrayList<>();
 
        arrayCountries.add("Canada");
        arrayCountries.add("Australia");
        arrayCountries.add("Russia");
        arrayCountries.add("Norway");
 
        System.out.println("Countries in the ArrayList are:");
        for (String country : arrayCountries) {
            System.out.println(country);
        }
    }
}

Selvom der kun er nogle få mindre forskelle mellem de to måder, der er beskrevet ovenfor, er de meget forskellige i, hvordan de fungerer. Den fulde størrelse blev først hentet, indekset blev vurderet ved hjælp af denne størrelse, og sidstnævnte element blev tilgået. På den anden side evaluerer denne tilgang hvert ArrayList-element serielt ved hjælp af en String-variabel.

Eksempel:Udskriv Arraylist i Java ved hjælp af forEach

Hver ArrayList i Java giver en forEach-metode, som ligesom for-løkken er en af ​​de enkleste måder at cykle gennem alle objekterne på. Vi kan nemt hente navnene fra ModelClass ved hjælp af getName() metoden, ligesom i det forrige eksempel.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.function.Consumer;


public class Codeunderscored {
    public static void main(String[] args) {

        ArrayList<ModelClass> arrModel;

        ModelClass modelOne = new ModelClass();
        ModelClass modelTwo = new ModelClass();
        ModelClass modelThree = new ModelClass();

        modelOne.setName("Joy");
        modelTwo.setName("Thomas");
        modelThree.setName("Mike");

        arrModel = new ArrayList<ModelClass>();
        arrModel.add(modelOne);
        arrModel.add(modelTwo);
        arrModel.add(modelThree);

        arrModel.forEach(new Consumer<ModelClass>() {
            @Override
            public void accept(ModelClass modelClass) {
                System.out.println(modelClass.getName());
            }
        });

    }
}

class ModelClass{

   private String name;
    void setName(String name){
        this.name = name;
    }

    String getName(){
        return name;
    }

}

Eksempel:Udskriv ArrayList i Java ved hjælp af iteratorramme

For at udskrive ArrayList-elementet indtil videre har vi brugt simple loop-principper, men i denne metode bruger vi Iterators, som er en del af Java-samlingsarkitekturen. Følgende interaktormetode vil blive brugt på denne måde.

  • Iterator() er en metode, der returnerer en ArrayList iterator.
  • hasNext():Kontrollerer ArrayList for tilstedeværelse eller fravær af det næste element.
  • next():Får adgang til ArrayLists elementer.

Vi gentager elementkontroltrinnet ved at bruge While-løkken og disse tre metoder.

Tag et kig på kodestykket nedenfor:

package org.under.codeunderscored;
 
import java.util.ArrayList;
import java.util.Iterator;
 
public class PrintArrayListMain {
 
    public static void main(String args[])
    {
        ArrayList<String> arrOperatingSystem = new ArrayList<>();
 
        arrOperatingSystem.add("MacOS");
        arrOperatingSystem.add("Windows");
        arrOperatingSystem.add("ChromeOS");
        arrOperatingSystem.add("Linux");
        arrOperatingSystem.add("Ubuntu");
 
        System.out.println("Elements in the ArrayList are:");
        Iterator<String> arrIterator = arList.iterator();
        while(arrIterator .hasNext())
        {
            String item = arrIterator.next();
            System.out.println(item);
        }
    }
}

Eksempel:Udskriv ArrayList i Java ved hjælp af ListIterator

For at udskrive en ArrayList i Java kan du bruge ListIterator i stedet for Iterator. Du kan rejse både foran og bagud med ListIterator. Lad os se på et eksempel:

package org.under.codeunderscored;
 
import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;
 
public class PrintArrayListMain {
 
    public static void main(String args[])
    {
        ArrayList<String> arrClubs = new ArrayList<>();
 
        arrClubs.add("Chelsea");
        arrClubs.add("Liverpool");
        arrClubs.add("Manchester");
        arrClubs.add("Newcastle");
        arrClubs.add("Brighton");
 
        System.out.println("Clubs in the ArrayList are:");
        ListIterator<String> listIterator = arrClubs.listIterator();
        while(listIterator .hasNext())
        {
            String item = listIterator.next();
            System.out.println(item);
        }
 
        System.out.println("Clubs of ArrayList in reverse order are:");
        ListIterator<String> listItrVar = citiesList.listIterator(arrClubs.size());
        while(listItrVar.hasPrevious())
        {
            String item = listItrVar.previous();
            System.out.println(item);
        }
    }
}

Eksempel:Udskriv Arraylist i Java ved hjælp af kommandoen toString()

Den sidste funktion på denne liste er en tilsidesættelse af ModelClass's toString()-metode. Når vi bruger arrModel til at kalde denne metode, returnerer den navnet. Husk, som navnet antyder, kan denne procedure kun returnere strengværdier.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.function.Consumer;


public class Codeunderscored {
    public static void main(String[] args) {

        ArrayList<ModelClass> arrModel;

        ModelClass modelOne = new ModelClass();
        ModelClass modelTwo = new ModelClass();
        ModelClass modelThree = new ModelClass();

        modelOne.setName("Joy");
        modelTwo.setName("Mike");
        modelThree.setName("James");

        arrModel = new ArrayList<ModelClass>();
        arrModel.add(modelOne);
        arrModel.add(modelTwo);
        arrModel.add(modelThree);

        System.out.println(arrModel .toString());

    }
}

class ModelClass{

   private String name;
    void setName(String name){
        this.name = name;
    }


    @Override
    public String toString() {
        return "ModelClass{" +
                "name='" + name + '\'' +
                '}';
    }
}

Eksempel:Hvordan udskriver man ArrayList, der indeholder brugerdefinerede objekter?

Hvordan kan vi udskrive en ArrayList af brugerdefinerede klasseobjekter? Overvej følgende kode, som indeholder en ArrayList af Employee-klasseobjekter.

package com.javacodeexamples.collections.arraylist;
 
import java.util.ArrayList;
 
public class JavaPrintArrayList {
 
    public static void main(String[] args) {
        
        ArrayList<Employee> arrEmployee = new ArrayList<Employee>();
        arrEmployee.add( new Employee("Kane", "Brown") );
        arrEmployee.add( new Employee("Ann", "Faith") );
        arrEmployee.add( new Employee("Moses", "Sang") );
        
        for( Employee emp : arrEmployee)
            System.out.println(emp);
        
    }
}
 
class Employee{
    
    private String firstName;
    private String lastName;
    
    public Employee(){}
    
    public Employee(String firstName, String lastName){
        this.firstName = firstName;
        this.lastName = lastName;
    }
    
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    
}

I stedet for at udskrive indholdet af medarbejderobjekterne, udskrev vores kode deres hukommelsesadresser. Fordi Employee-klassen ikke tilsidesætter toString-metoden, bruges Object-klassens standard toString-metode, som udskriver objektets adresseposition. I stedet for hukommelsesplaceringer, lad os tilsidesætte toString-funktionen i Employee-klassen for at få indholdet af Employee-objektet.

package com.javacodeexamples.collections.arraylist;
 
import java.util.ArrayList;
 
public class JavaPrintArrayListExample {
 
    public static void main(String[] args) {
        
        ArrayList<Employee> arrEmployee = new ArrayList<Employee>();
        arrEmployee.add( new Employee("Kane", "Brown") );
        arrEmployee.add( new Employee("Ann", "Faith") );
        arrEmployee.add( new Employee("Moses", "Sang") );
        
        for( Employee p : arrEmployee)
            System.out.println(p);
        
    }
}
 
class Employee{
    
    private String firstName;
    private String lastName;
    
    public Employee(){}
    
    public Employee(String firstName, String lastName){
        this.firstName = firstName;
        this.lastName = lastName;
    }
    
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    
    public String toString(){
        return "[" + firstName + "," + lastName + "]";
    }
    
}

Konklusion

ArrayLists har været et varmt emne i Java for nylig. De har mange flere fordele end almindelige arrays. ArrayLists giver dig mulighed for at gemme flere objekter i en række og slette dem, når de ikke længere er nødvendige. De hjælper dig også med at udføre standardlisteoperationer såsom sortering og søgning. Brug af et almindeligt array ville kræve, at du opretter din logik til disse operationer, hvilket ville tage mere tid og kræfter.

ArrayLists er nyttige i forskellige situationer på grund af deres brede liste over fordele. På den anden side er udskrivning en kritisk aktivitet, som ArrayLists mangler. ArrayLists kan være lavet af grundlæggende datatyper (heltal og strenge) eller mere komplekse datatyper (brugerdefinerede klasser). Hvert af disse scenarier kræver et separat sæt handlinger for at udskrive en ArrayList.

Sådan kan du hurtigt udskrive ArrayList-elementer med disse metoder. Yderligere kan du finde på en anden metode end disse metoder; lad os venligst vide, hvordan det sidste går for dig. Hvis du støder på problemer, bedes du sende dine spørgsmål, og vi vil undersøge dem nærmere.


Java tag