Array in ArrayList ablegen

Bitte aktiviere JavaScript!
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
 
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++) {
//...
 
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.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben