[JAVA] Créer une ArrayList qui vous permet de lancer et de récupérer les coordonnées d'un plan bidimensionnel

Aperçu

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.

Détails

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.

伸縮自在な座標入れ.png

À 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)

procédure

(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)*/
	}
}

De côté

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.

Recommended Posts

Créer une ArrayList qui vous permet de lancer et de récupérer les coordonnées d'un plan bidimensionnel
Un programme (Java) qui génère la somme des nombres pairs et impairs dans un tableau
Un mémo du programme que vous pouvez réaliser que la probabilité de lancer des dés est d'environ 1/6
Vous souhaitez supprimer une IOException de Stream? dans ce cas
L'histoire de l'oubli de fermer un fichier en Java et de l'échec
[Android] Développer un service permettant aux étudiants universitaires de vérifier l'état de fonctionnement des bus circulant dans l'université.
Une solution à une erreur qui vous met en colère parce que vous ne suivez pas le paramètre par défaut de MySQL ONLY_FULL_GROUP_BY en production et qu'il n'est pas unique
J'ai essayé de créer une application qui vous permet de publier et de discuter par genre ~ Là où j'ai eu du mal ~
Que faire si vous ne pouvez pas obtenir le texte d'un élément dans Selenium
Une méthode qui applique des transformations en parallèle à tous les éléments et renvoie un tableau de valeurs de retour qui conservent leur ordre
J'ai essayé de créer une application qui vous permet de publier et de discuter par genre ~ Vue d'ensemble de l'application ~
Une histoire que j'ai réalisé que je devais étudier en premier lieu en tant qu'ingénieur
Comment récupérer la valeur de hachage dans un tableau dans Ruby
[Ruby] Comment récupérer le contenu du double hachage
Un programme qui compte le nombre de mots dans une liste
[Rails] Comment enregistrer temporairement l'URL de demande d'un utilisateur qui n'est pas connecté et revenir à cette URL après la connexion
[Swift] Lorsque vous voulez savoir si le nombre de caractères dans String correspond à un certain nombre ...
Une collection de modèles dont vous voulez être conscient pour ne pas compliquer le code
Lancer une exception et attraper lorsqu'il n'y a pas de gestionnaire correspondant au chemin au printemps
Si vous souhaitez simuler une méthode dans RSpec, vous devez utiliser la méthode allow pour mock et la méthode singleton.
Essayez d'imiter l'idée d'un tableau à deux dimensions avec un tableau à une dimension
[Swift5] Comment obtenir un tableau et un ensemble de différences entre les tableaux
Convertir un tableau de chaînes en une liste d'entiers en Java
Comment obtenir la longueur d'un fichier audio avec Java
Lorsque vous recevez un appel, envoyez un SMS à ce numéro
Résolution d'une erreur survenue lors de la tentative d'utilisation de Spark dans un environnement où Java 8 et Java 11 coexistent
Comment faire fonctionner IGV en utilisant la communication par socket, et l'histoire de la création d'un Ruby Gem en utilisant cette méthode
Êtes-vous toujours épuisé par la mise en œuvre de la fonction de recherche? Gem'ransack 'qui peut être implémenté en un instant
Comment définir l'image pour dessiner à gauche / à droite du bouton à l'aide de la police d'icône (Iconics)
L'histoire de l'introduction de Gradle en tant que modernisation d'un système existant qui ne gérait pas de packages
[Java] Affiche le résultat de ffprobe -show_streams dans JSON et mappe-le à un objet dans Jackson
Une erreur s'est produite dans le cours gratuit de RubyOnRails Udemy, l'a résolue et est allée jusqu'au bout
Ceci et cela de JDK
Un mémo sobrement accro à la demande de multipart / form-data
Un mémo lorsque vous souhaitez effacer la partie horaire de l'agenda
Comment tester une méthode privée et la simuler partiellement en Java
Faites en sorte qu'Apache et Tomcat travaillent ensemble en un clin d'œil sur CentOS 8
Une collection de phrases qui impressionne le "sentiment différent" de Java et de JavaScript
A vous qui regrettez que la conversion de JODConverter + LibreOffice soit lente
Confirmation et refactoring du flux de la requête au contrôleur dans [httpclient]
Ceci et cela de la mise en œuvre du jugement en temps réel des dates en Java
Comment modifier le nombre maximum et maximum de données POST dans Spark
Exemple de programme qui renvoie la valeur de hachage d'un fichier en Java
Comment changer la valeur d'une variable à un point d'arrêt dans intelliJ
Comment obtenir le chemin absolu d'un répertoire s'exécutant en Java
Trouvez le maximum et le minimum des cinq nombres saisis en Java
L'histoire de la rencontre d'un débordement arithmétique qui ne devrait pas être rencontré dans Ruby
Ubuntu 18 est le système d'exploitation qui ajoute une carte réseau à une instance de serveur dans le cloud de Sakura et attribue une adresse IP locale.
[Note] [Débutant] Comment écrire lors de la modification de la valeur d'un élément de tableau dans une phrase répétée de Ruby
Lors de la réaffectation à un argument dans une méthode Ruby puis en appelant `super` → Celui réaffecté est utilisé
J'ai essayé de créer une application Web qui recherche les tweets avec vue-word cloud et examine la tendance de ce qui est écrit dans le profil associé