2016-05-12 12 views
0

Ich habe ein 2D-Array mit einer Klasse für jede Zelle, die Informationen enthalten;ArrayList oder Array-Stack in Android

dh
class gridCell { 
    int value; 
    Boolean valid; 
    int anotherValue; 
} 

gridCell[][] grid=new gridCell[50][50]; 

Das funktioniert gut und einmal initialisiert ich das Array zugreifen können

grid[10][10].value=42; 

Mein Problem durch die Verwendung ist ich einen Stapel erstellen möchten oder Arraylist die Grid-Array-Zustand zu verschiedenen Zeiten zu speichern. Wenn ich versuche und eine Arraylist von

ArrayList<grid> gridList=new ArrayList<grid>(); 
erstellen

Ich bekomme den Fehler, dass Gitter ist keine Klasse. Gleiche Sache, wenn ich versuche, und verwenden Sie es in einem Stapel

Stack<grid> gridStack = new Stack<grid>(); 

So wie kann ich das Gitter erklären, so kann es zu einem Stapel oder Arraylist hinzugefügt werden?

Jede Hilfe wird geschätzt.

+1

Ihre Klasse mit dem Namen ist 'gridCell' nicht' grid' richtig? –

Antwort

1

Sie müssen den ArrayList-Typ als den genauen Typ deklarieren, den Sie speichern möchten. Da Sie die Grid-Array speichern möchten, müssen Sie nur den Array-Typ zu übergeben:

ArrayList<gridCell[][]> gridList = new ArrayList<gridCell[][]>(); 

Sie scheinen ein wenig verwirrt zwischen den Typen und Variablen zu sein. In Ihrer Erklärung

gridCell[][] grid = new gridCell[50][50];,

erklären Sie sind eine Variablegrid von TypgridCell[][]

+0

Ja, das ist richtig. Ich beabsichtigte, dass das Gitter eine Variable (Array) ist, die Gitterzellenelemente enthält. – Some1Else

+0

Diese Erklärung hat gut funktioniert. Wie füge ich das aktuelle Grid-Array zur Liste hinzu? Die Verwendung von gridList.add (Gitter) scheint keine korrekte Kopie des aktuellen Gitter-Arrays zu erstellen. – Some1Else

+0

Das liegt daran, dass Arrays [Referenztypen] sind (http://stackoverflow.com/questions/8790809/whats-the-difference-between-primitive-and-reference-types). Wenn Sie aufeinanderfolgende Inkremente des Grid-Arrays speichern möchten, müssen Sie vor dem Hinzufügen eine Kopie erstellen. 'System.arraycopy()' sollte Ihnen helfen. – adelphus