Array in ArrayList ablegen

Diskutiere Array in ArrayList ablegen im Java Basics - Anfänger-Themen Bereich.
F

freehawk

Hallo zusammen,

ich habe folgendes versucht:

Code:
import java.util.ArrayList;
import java.util.Arrays;

public class ArrayListArrayTest 
{

    public static void main(String[] args) 
    {
        ArrayList<int[]> test = new ArrayList<int[]>();
        
        int[] fuellung = new int[10];
        
        for( int i = 0; i < 10; i++ )
        {
            for( int j = 0; j < fuellung.length; j++ )
            {
                fuellung[j] = (( i + 1 ) * 100 ) + j;
            }
            
            System.out.println( Arrays.toString( fuellung ));
            
            test.add( fuellung );
        }
        
        System.out.println( "-------------------------------------------------" );
        
        for( int i = 0; i < test.size(); i++ )
        {
            System.out.println( Arrays.toString( test.get( i )) );
        }
        
    }

}
Die Ausgabe davon ist nun folgende:
Code:
[100, 101, 102, 103, 104, 105, 106, 107, 108, 109]
[200, 201, 202, 203, 204, 205, 206, 207, 208, 209]
[300, 301, 302, 303, 304, 305, 306, 307, 308, 309]
[400, 401, 402, 403, 404, 405, 406, 407, 408, 409]
[500, 501, 502, 503, 504, 505, 506, 507, 508, 509]
[600, 601, 602, 603, 604, 605, 606, 607, 608, 609]
[700, 701, 702, 703, 704, 705, 706, 707, 708, 709]
[800, 801, 802, 803, 804, 805, 806, 807, 808, 809]
[900, 901, 902, 903, 904, 905, 906, 907, 908, 909]
[1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009]
-------------------------------------------------
[1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009]
[1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009]
[1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009]
[1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009]
[1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009]
[1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009]
[1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009]
[1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009]
[1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009]
[1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009]
Ich hätte eigentlich erwartet, dass die ursprünglich erstellten Arrays nun in der ArrayList stehen und nicht nur die Zeiger auf den einen Array. Dem scheint aber nicht der Fall sein.

Wie bekomme ich es hin, dass hier die ursprünglich erstellten Array Inhalte in der ArrayList gespeichert werden? Bzw. muss ich hier was anderes einsetzten also keine ArrayList?

Danke

Gruß
Markus
 
Tarrew

Tarrew

Entweder du klonst das Array beim hinzufügen:
Java:
test.add( fuellung.clone() )
oder du initialisierst das Array mit jedem Schleifdurchlauf neu:
Java:
//...
for (int i = 0; i < 10; i++) {
    int[] fuellung = new int[10];
    for (int j = 0; j < fuellung.length; j++) {
//...
 
W

White_Fox

Ich hätte eigentlich erwartet, dass die ursprünglich erstellten Arrays nun in der ArrayList stehen und nicht nur die Zeiger auf den einen Array. Dem scheint aber nicht der Fall sein.
Du arbeitest in Java immer, IMMER auf Zeigern. Bzw. in Java spricht man von Referenzen. An die echten Objekte kommst du nicht ran.

Das ist übrigens auch der Grund, warum der ==-Operator beim Vergleich von Objekten nicht funktioniert.
 
Thema: 

Array in ArrayList ablegen

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben