ArrayLists de int[] dans un ArrayList... - Java - Programmation
Marsh Posté le 08-11-2017 à 13:19:29
Citation : Je poursuis mon apprentissage de Java : codingame en ce moment |
Aller lire un tutoriel java ou deux pourrait être une bonne idée non? Et lire les messages du compilateur
Code :
|
Java fait pas dans la conception virginale, là t'as déclaré une variable d'un certain type mais t'as rien mis dedans, Java risque de pas être content.
Code :
|
Initialiser un objet ça se fait avec "new", "ArrayList<int[]>" c'est une classe qui n'est pas intrinsèquement un objet, s'pour ça que le compilateur te suggère de rajouter ".class" pour récupérer un objet classe. Si tu fais ça (et que t'enlèves le <int[]> parce-que Java gère pas les objets classe générique) il va te dire que tu peux pas mettre une classe dans ton ArrayList:
Citation : error: no suitable method found for add(Class<ArrayList> ) |
En java, les objets sont initialisés avec "new".
Code :
|
Ce truc veut strictement rien dire, une arraylist c'est pas une méthode, ça s'appelle pas. T'as songé à aller lire la doc?
Marsh Posté le 08-11-2017 à 14:37:22
Merci beaucoup pour tes explications.
Je me rends compte que je suis à la ramasse.
Je vais aller lire la doc
Merci !!
Edit : pour New je suis bien content d'avoir appris qu'on initialise avec, j'avais souvent eu des problemes à ce niveau.
Marsh Posté le 11-11-2017 à 19:31:10
Bon j'y suis arrivé ! J'ai voulu utiliser des Vectors (qui me semblent en fin de compte bien similaires aux ArrayList) car en c++ on y accède comme ça : vector[i][j]. Mais pas en Java ! Même si en fait c'est simple : vector.get(i).get(j)[k] pour un Vector de Vectors de int[], avec les set qui vont bien à l'aide de Vectors temp reconstitués.
Voici la déclaration et initialisation de mon Vector de Vector principal
Code :
|
Et une méthode
Code :
|
Je vais continuer à lire la doc des ArrayList pour y passer définitivement, mais apparemment c'est kif kif, au moins à mon niveau
Et puis je capte bien mieux comment utiliser une methode (avant j'avais des variables globales )
Merci encore
Marsh Posté le 11-11-2017 à 20:40:25
Lt Ripley a écrit : Bon j'y suis arrivé ! J'ai voulu utiliser des Vectors (qui me semblent en fin de compte bien similaires aux ArrayList) |
Vector c'est une "ancienne" version d'ArrayList (qui a été mis à jour par la suite pour être plus proche, c'est pour ça qu'il y a des méthodes redondantes genre add et addElement). C'est pas utilisé dans le code moderne. Idem Hashtable (vieux) contre HashMap (moderne) et Enumeration (vieux) contre Iterator (moderne). Ç'est équivalent, mais les lecteurs/collègues vont se poser des questions s'ils te voient utiliser Vector.
Lt Ripley a écrit : car en c++ on y accède comme ça : vector[i][j]. Mais pas en Java ! |
Nope, pas de surcharge d'opérateurs en Java, donc l'indexation avec [] c'est uniquement pour les arrays "natifs".
Code :
|
Tu peux itérer sur une collection (vecteur ou arraylist) comme sur un array, donc la boucle externe peut devenir:
Code :
|
Code :
|
Au final tu utilises pas vraiment ton int[] comme un array, plus comme une structure, en Java "normal" tu définirais une classe dédiée pour ça.
Marsh Posté le 11-11-2017 à 21:01:18
Merci beaucoup pour ces nouvelles infos !
Je vais bosser dessus, je posterai mon nouveau code
Marsh Posté le 11-11-2017 à 22:43:02
Ça y est j'ai créé une classe interne au lieu d'un int[]
Code :
|
J'ai remplacé l'intégralité de mes Vectors par des ArrayList : Il n'y a que les .addElement() qui ne passaient plus. Il faut utiliser .add()
Pour l'instant je garde mes itérations à la "i++" car je trouve plus lisible à mon oeil (je savais qu'on pouvait itérer à la manière que tu m'as indiquée)
Ça marche impeccable
Je m'étonne moi même, j'ai mis une poignée de minutes
Marsh Posté le 07-11-2017 à 21:21:58
Bonjour
Je poursuis mon apprentissage de Java : codingame en ce moment
Je sèche. C'est la première fois que j'utilise un ArrayList, en plus direct je l’emboîte dans un autre ArrayList.
Je n'arrive pas pas ajouter mes int[] (de 2 int) dans un ArrayList situé dans un autre ArrayList
Merci pour votre aide !
Message édité par Lt Ripley le 07-11-2017 à 21:23:51