ArrayLijst van int-array in java

Ik ben nieuw in het concept van arraylist. Ik heb een kort programma gemaakt dat als volgt is:

ArrayList<int[]> arl=new ArrayList<int[]>();
int a1[]={1,2,3};
arl.add(0,a1);
System.out.println("Arraylist contains:"+arl.get(0));

Het geeft de output: Arraylist contains:[I@3e25a5

Nu zijn mijn vragen:

  1. Hoe de juiste waarde weer te geven, bijv. 1 2 3.
  2. Hoe krijg ik toegang tot het enkele element van array a1, d.w.z. als ik de waarde op a1[1] wil weten.

Antwoord 1, autoriteit 100%

Allereerst kun je voor het initialiseren van een container geen primitief type gebruiken (bijv. int; je kunt int[]gebruiken, maar omdat je alleen een array van gehele getallen wilt , daar zie ik geen nut in). In plaats daarvan moet u als volgt Integergebruiken:

ArrayList<Integer> arl = new ArrayList<Integer>();

Gebruik voor het toevoegen van elementen de functie add:

arl.add(1);  
arl.add(22);
arl.add(-2);

Last but not least, voor het afdrukken van de ArrayListkunt u de ingebouwde functionaliteit van toString()gebruiken:

System.out.println("Arraylist contains: " + arl.toString());  

Als u toegang wilt tot het i-element, waarbij ieen index is van 0 tot de lengte van de array-1, kunt u een :

int i = 0; // Index 0 is of the first element
System.out.println("The first element is: " + arl.get(i));

Ik raad aan om eerst over Java-containers te lezen, voordat u ermee aan de slag gaat.


Antwoord 2, autoriteit 31%

  1. Gebruik Arrays.toString( arl.get(0) ).

  2. arl.get(0)[1]


Antwoord 3, autoriteit 29%

Eenvoudiger dan dat.

List<Integer> arrayIntegers = new ArrayList<>(Arrays.asList(1,2,3));
arrayIntegers.get(1);

In de eerste regel maak je het object aan en in de constructor geef je een arrayparameter door aan List.

In de tweede regel heb je alle methoden van de klasse List: .get (…)


Antwoord 4, autoriteit 8%

De opstelling:

   List<int[]> intArrays=new ArrayList<>();
    int anExample[]={1,2,3};
    intArrays.add(anExample);

Om een enkele int[] arrayop te halen in de ArrayList op index:

   int[] anIntArray = intArrays.get(0); //'0' is the index
    //iterate the retrieved array an print the individual elements
    for (int aNumber : anIntArray ) { 
        System.out.println("Arraylist contains:" + aNumber );
    }

Om alle int[] arraysop te halen in de ArrayList:

   //iterate the ArrayList, get and print the elements of each int[] array  
    for(int[] anIntArray:intArrays) {
       //iterate the retrieved array an print the individual elements
       for (int aNumber : anIntArray) {
           System.out.println("Arraylist contains:" + aNumber);
       }
}

Uitvoeropmaak kan worden uitgevoerd op basis van deze logica. Veel succes!!


Antwoord 5, autoriteit 7%

In Java is een array een object. Daarom retourneert de aanroep van arl.get(0) een primitief int[]-object dat als ascii verschijnt in uw aanroep naar System.out.

Het antwoord op uw eerste vraag is daarom

System.out.println("Arraylist contains:"+Arrays.toString( arl.get( 0 ) ) );

Als u op zoek bent naar bepaalde elementen, moet er als zodanig naar het geretourneerde object int[] worden verwezen.
Het antwoord op uw tweede vraag zou zoiets zijn als

   int[] contentFromList = arl.get(0);
    for (int i = 0; i < contentFromList.length; i++) {
        int j = contentFromList[i];
        System.out.println("Value at index - "+i+" is :"+j);
    }

Antwoord 6, autoriteit 5%

Je moet <Integer>gebruiken in plaats van <int>:

int a1[] = {1,2,3};
ArrayList<Integer> arl=new ArrayList<Integer>();
for(int i : a1) {
    arl.add(i);        
    System.out.println("Arraylist contains:" + arl.get(0));
}

Antwoord 7, autoriteit 3%

Iedereen heeft gelijk. U kunt een int[]-object niet rechtstreeks afdrukken, maar het is ook niet nodig om geen ArrayList van integer-arrays te gebruiken.

Met,

Arrays.toString(arl.get(0))

betekent het opsplitsen van het String-object in een subtekenreeks als u er iets tussenin wilt invoegen, zoals komma’s.

Dit is wat ik denk dat amv zocht vanuit een int array-oogpunt.

System.out.println("Arraylist contains: " 
    + arl.get(0)[0] + ", " 
    + arl.get(0)[1] + ", " 
    + arl.get(0)[2]);

Dit antwoord is een beetje laat voor amv, maar kan nog steeds nuttig zijn voor anderen.


Antwoord 8

java.util.Arrays.toString()converteert Java-arrays naar een string:

System.out.println("Arraylist contains:"+Arrays.toString(arl.get(0)));

Antwoord 9

ArrayList<Integer> list = new ArrayList<>();
int number, total = 0;
for(int i = 0; i <= list.size(); i++){
    System.out.println("Enter number " + (i + 1) + " or enter -1 to end: ");
    number = input.nextInt();
    list.add(number);
    if(number == -1){
        list.remove(list.size() - 1);
        break;
    }
}
System.out.println(list.toString());
for(int i: list){
    System.out.print(i + "  ");
    total+= i;
}
System.out.println();
System.out.println("The sum of the array content is: " + total);

Antwoord 10

Integer is de wrapper-klasse en int is het primitieve gegevenstype. Gebruik altijd liever Integer in ArrayList.


Antwoord 11

Voor de meer onervaren heb ik besloten een voorbeeld toe te voegen om te demonstreren hoe een ArrayList of Integer-arrays kan worden ingevoerd en uitgevoerd op basis van deze vraag hier.

   ArrayList<Integer[]> arrayList = new ArrayList<Integer[]>();
    while(n > 0)
    {
        int d = scan.nextInt();
       Integer temp[] = new Integer[d];
        for (int i = 0 ; i < d ; i++)
        {
            int t = scan.nextInt();
            temp[i]=Integer.valueOf(t);
        }
        arrayList.add(temp);
        n--;
    }//n is the size of the ArrayList that has been taken as a user input & d is the size 
    //of each individual array.
     //to print something  out from this ArrayList, we take in two 
    // values,index and index1 which is the number of the line we want and 
    // and the position of the element within that line (since the question
    // followed a 1-based numbering scheme, I did not change it here)
    System.out.println(Integer.valueOf(arrayList.get(index-1)[index1-1]));

Dankzij dit antwoord op deze vraag hierkreeg ik het juiste antwoord. Ik geloof dat dit de vraag van OP naar tevredenheid beantwoordt, zij het een beetje laat en kan dienen als een verklaring voor mensen met minder ervaring.

Other episodes