J'ai créé un programme qui peut générer les coordonnées d'un plan bidimensionnel avec un tableau bidimensionnel et le jeter dans un ArrayList à tout moment.
Actuellement, j'ai du mal à créer un algorithme de génération de labyrinthe qui utilise la méthode d'étirement des murs, mais en chemin j'ai réalisé que je devais préparer "quelque chose pour enregistrer les coordonnées du mur en construction". .. (Site de référence: Algorithme de génération de labyrinthe (méthode d'étirement des murs))
Le mur étant généré aléatoirement, les coordonnées à enregistrer = le nombre d'éléments ne sont pas constants. Par conséquent, je pense vaguement que ce serait bien d'avoir quelque chose comme l'image ci-dessous.
À la suite de diverses enquêtes, j'ai découvert que la ArrayList qui existe en Java est "un tableau qui étend la longueur sans permission". Cependant, cela peut être une question de savoir comment le vérifier, mais la plupart d'entre eux sont de type int et de type String, et je n'ai rien trouvé qui gère les tableaux.
Par conséquent, j'ai essayé de créer une ArrayList qui peut gérer des tableaux à deux dimensions, et certaines opérations ont été effectuées, je vais donc le montrer ci-dessous pendant l'enregistrement. De plus, j'ai fait référence au site suivant lors de sa création. (Référence: Tableau multidimensionnel dans ArrayList)
(1) Création d'une ArrayList (2) Génération d'un tableau bidimensionnel pour l'affectation (3) Utilisez la commande add pour ajouter le tableau généré dans (2) à la ArrayList. (4) Utilisez la commande get pour lire les données ajoutées dans (3)
Generics.java
import java.util.ArrayList;
public class Generics{
public static void main(String[] args){
/*
Un programme qui ajoute un tableau à deux dimensions à une ArrayList et récupère les valeurs
→ Lors de l'ajout, générez un tableau et un tableau.add
→ tableau lors de l'obtention de la valeur.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]);
/*Résultat d'exécution
---------------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)*/
}
}
En général, c'est un programme qui «fonctionne, mais je ne suis pas sûr de ce qui se passe». Surtout dans la déclaration d'ArrayList, je n'ai aucune idée pourquoi la génération et l'acquisition fonctionnent bien de cette façon. C'est peut-être parce que vous ne savez pas vraiment ce qu'est une ArrayList en premier lieu, et que vous êtes doublement obscurci par le chevauchement des génériques, que vous ne comprenez pas vraiment.
Je pense aussi: "Si vous voulez traiter des choses que vous ne comprenez pas jusqu'à présent sans bien les connaître, pourquoi ne pas créer une classe appropriée et les énumérer?" Il existe peut-être un moyen plus efficace de l'écrire.
Pour le moment, dans le futur, en créant un labyrinthe, ・ Qu'est-ce que ArrayList? ・ Qu'est-ce que les génériques? Sera étudié plus loin.