ArrayList - JAVA
Résolu
Tsquare
Messages postés
32
Statut
Membre
-
Tsquare Messages postés 32 Statut Membre -
Tsquare Messages postés 32 Statut Membre -
Bonjour,
Je vous expose mon problème:
J'ai des ArrayList d'ArrayList imbriqués ( ex: [ string, [Arraylist_d'ArrayList], [Arraylist], [ArrayList_d'ArrayList_d'ArrayList], string] ) et je souhaiterais n'avoir qu'un Arraylist.
Pour cela j'ai écrit une petite fonction mais quand je l'éxécute, j'ai un message d'erreur :
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.util.ArrayList
et je ne comprend pas d'où il vient. Je vous donne mon code au cas où vous pourriez m'aidez...
Mon test est un "ArrayList imbriqué" et je voudrais mettre toutes les informations de test dans un ArrayList simple resultat_final.
Merci d'avance.
Je vous expose mon problème:
J'ai des ArrayList d'ArrayList imbriqués ( ex: [ string, [Arraylist_d'ArrayList], [Arraylist], [ArrayList_d'ArrayList_d'ArrayList], string] ) et je souhaiterais n'avoir qu'un Arraylist.
Pour cela j'ai écrit une petite fonction mais quand je l'éxécute, j'ai un message d'erreur :
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.util.ArrayList
et je ne comprend pas d'où il vient. Je vous donne mon code au cas où vous pourriez m'aidez...
import java.util.ArrayList;
public class fonction {
public static ArrayList aplatir (Object test){
ArrayList resultat_final = new ArrayList();
for (int i = 0; i<((ArrayList) test).size();i++)
{
if ((( (ArrayList) ((ArrayList) test).get(i)).size()>1))
{aplatir( ((ArrayList) test).get(i));}
else
{resultat_final.add(((ArrayList) test).get(i));}
}
System.out.println(resultat_final);
return resultat_final;
}
}
Mon test est un "ArrayList imbriqué" et je voudrais mettre toutes les informations de test dans un ArrayList simple resultat_final.
Merci d'avance.
A voir également:
- ArrayList - JAVA
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
3 réponses
Essaye peut-être d'utiliser le "instanceof" pour tester si ton objet est bien de type ArrayList.
public class InstanceOfExample
{
public static java.util.Scanner scanner = new java.util.Scanner(System.in);
public static void main(String[] args)
{
String testeur = "bonjour";
// vérifions si ma variable testeur est un String
// testeur est bien de type String
if(testeur instanceof String)
System.out.println("testeur == String");
else
System.out.println("testeur != String");
// vérifions maintenant si ma variable scanner est un String
// le scanner est de type Scanner et donc n'est pas un String
if(scanner instanceof String)
System.out.println("scanner == String");
else
System.out.println("scanner != String");
}
}
Tsquare
Messages postés
32
Statut
Membre
Je ne connaissais pas instanceof mais j'ai une petite idée de comment l'utiliser, merci beaucoup (c'est pas la première fois ;) ).
Visiblement le variable 'test' n'est pas du type 'ArrayList'. Par autre, si tu utilise toujours le variable 'test' comme ArrayTest, pourquoi ne le declare-tu comme tel dans la signature de la fonction? Tu n'aurais pas besoin de le "caster" a chaque fois quand tu l'utilise...
import java.util.ArrayList;
public class fonction {
public static ArrayList aplatir (ArrayList test){
ArrayList resultat_final = new ArrayList();
for (int i = 0; i< test.size();i++)
{
if ( ((ArrayList) test.get(i)).size()>1)
{aplatir( (ArrayList) test).get(i);}
else
{resultat_final.add(((ArrayList) test).get(i));}
}
System.out.println(resultat_final);
return resultat_final;
}
}
En déclarant la variable test en ArrayList sa donne ça mais le problème demeure...
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.util.ArrayList
Tu essaye de convertir un entier (Integer) en une ArrayList
Exemple pour avoir la même erreur :
Si tu ne vois pas ce qui pourrait contenir un entier dans ton code et que tu caste en ArrayList, fait un debug Step by Step ou alors met des points d'arrêts dans ton code pour voir ce que valent tes variables a différents moments de l'éxecution.
Tu essaye de convertir un entier (Integer) en une ArrayList
Exemple pour avoir la même erreur :
import java.util.ArrayList;
public class test
{
public static void main(String[] args)
{
ArrayList monTest = new ArrayList();
monTest.add(1);
System.out.println(monTest);
// Jusque ici tout vas bien, normal !
// Si je fait (ArrayList)1 ça ne compilera pas
// Donc on va faire passer notre Integer par
// Un Object plus générique sur lequel on
// Peut appliquer un Cast (ArrayList)
Object monObjet = new Integer(4);
monTest = (ArrayList)monObjet;
// Ca compile, mais erreur à l'execution :
/*
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.util.ArrayList
at test.main(test.java:11)
*/
}
}
Si tu ne vois pas ce qui pourrait contenir un entier dans ton code et que tu caste en ArrayList, fait un debug Step by Step ou alors met des points d'arrêts dans ton code pour voir ce que valent tes variables a différents moments de l'éxecution.