Ich habe ein Programm erstellt, das Koordinaten einer zweidimensionalen Ebene mit einem zweidimensionalen Array generieren und jederzeit in eine ArrayList werfen kann.
Derzeit habe ich Probleme, einen Algorithmus zur Erzeugung von Labyrinthen zu erstellen, der die Wanddehnungsmethode verwendet. Unterwegs wurde mir jedoch klar, dass ich "etwas vorbereiten musste, um die Koordinaten der im Bau befindlichen Wand aufzuzeichnen". .. (Referenzseite: Labyrinthgenerierungsalgorithmus (Wanddehnungsmethode))
Da die Wand zufällig erzeugt wird, sind die aufzuzeichnenden Koordinaten = die Anzahl der Elemente nicht konstant. Daher denke ich vage, dass es schön wäre, so etwas wie das Bild unten zu haben.
Als Ergebnis verschiedener Untersuchungen habe ich erfahren, dass die in Java vorhandene ArrayList "ein Array ist, das die Länge ohne Erlaubnis erweitert". Es kann jedoch eine Frage der Überprüfung sein, aber die meisten davon sind vom Typ int und vom Typ String, und ich konnte nichts finden, das Arrays verarbeitet.
Aus diesem Grund habe ich versucht, eine ArrayList zu erstellen, die zweidimensionale Arrays verarbeiten kann, und bestimmte Vorgänge wurden ausgeführt. Daher werde ich sie im Folgenden während der Aufnahme zeigen. Außerdem habe ich beim Erstellen auf die folgende Site verwiesen. (Referenz: Mehrdimensionales Array in ArrayList)
(1) Erstellen einer ArrayList (2) Erzeugung eines zweidimensionalen Arrays zur Zuordnung (3) Verwenden Sie den Befehl add, um das in (2) generierte Array zur ArrayList hinzuzufügen. (4) Verwenden Sie den Befehl get, um die in (3) hinzugefügten Daten zu lesen.
Generics.java
import java.util.ArrayList;
public class Generics{
public static void main(String[] args){
/*
Ein Programm, das einer ArrayList ein zweidimensionales Array hinzufügt und die Werte abruft
→ Generieren Sie beim Hinzufügen ein Array und ein Array.add
→ Array beim Abrufen des Wertes.get
*/
ArrayList<Integer[]> array = new ArrayList<Integer[]>();
System.out.println("---------------point1------------------");
Integer[][] point1 = {{6,7}};
array.add(point1[0]);
System.out.printf("(x,y)=(%d,%d)\n",array.get(0)[0],array.get(0)[1]);
System.out.println("---------------point2------------------");
Integer[][] point2 = {{7,4},{2,1}};
array.add(point2[0]);
array.add(point2[1]);
System.out.printf("(x,y)=(%d,%d)\n",array.get(1)[0],array.get(1)[1]);
System.out.printf("(x,y)=(%d,%d)\n",array.get(2)[0],array.get(2)[1]);
System.out.println("---------------point3------------------");
Integer[][] point3 = {{1,2},{4,6},{3,6}};
array.add(point3[0]);
array.add(point3[1]);
array.add(point3[2]);
System.out.printf("(x,y)=(%d,%d)\n",array.get(3)[0],array.get(3)[1]);
System.out.printf("(x,y)=(%d,%d)\n",array.get(4)[0],array.get(4)[1]);
System.out.printf("(x,y)=(%d,%d)\n",array.get(5)[0],array.get(5)[1]);
/*Ausführungsergebnis
---------------point1------------------
(x,y)=(6,7)
---------------point2------------------
(x,y)=(7,4)
(x,y)=(2,1)
---------------point3------------------
(x,y)=(1,2)
(x,y)=(4,6)
(x,y)=(3,6)*/
}
}
Insgesamt ist es ein Programm, das "vorerst funktioniert, aber ich bin mir nicht sicher, was los ist und wie". Insbesondere in der Deklaration von ArrayList habe ich keine Ahnung, warum die Generierung und Erfassung auf diese Weise gut funktionieren. Vielleicht liegt es daran, dass Sie nicht wirklich wissen, was eine ArrayList überhaupt ist, und dass Sie durch die Überlappung von Generika, die Sie nicht wirklich verstehen, doppelt verdeckt werden.
Ich denke auch: "Wenn Sie sich mit Dingen befassen möchten, die Sie bisher nicht verstehen, ohne sie gut zu kennen, warum nicht eine geeignete Klasse bilden und sie auflisten?" Vielleicht gibt es eine effizientere Möglichkeit, es zu schreiben.
Vorerst in der Zukunft, während ein Labyrinth erstellt wird, ・ Was ist ArrayList? ・ Was sind Generika? Wird weiter untersucht.