Rechercher : dans
Par :

ArrayList - JAVA

Dernière réponse le 26 déc 2008 à 17:33:20 Tsquare, le 26 déc 2008 à 10:21:14 
 Signaler ce message aux modérateurs

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...

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.
Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « ArrayList JAVA » dans :
Installer Java sous Ubuntu VoirPar défaut, Firefox n'est pas fourni avec Java. Voici comment procéder pour l'installer: Ouvrez un terminal (Menu Applications > Accessoires > Terminal) et tapez: sudo aptitude install sun-java6-jre sun-java6-plugin ou sudo aptitude install ...
[Firefox] plugin Java Jre de Sun VoirA) Les différentes variantes Java chez Sun B) Installation sous Mandriva Limited Edition 2005 ETAPE 1 ETAPE 2: Création du lien symbolique C) Installation sous debian lenny D) Installation sous ubuntu hardy heron A) Les différentes...
[Logiciel libre] Installation firefox 2.0+java+flash VoirInstallation firefox 2.0+java+flash en ligne de commande A. INTRODUCTION B. INSTALLATION FIREFOX 1. Création d'environnement 2. Téléchargement et vérification de la signature 3. Installation de Firefox 4. Démarrage de l'application C....
Télécharger Java Runtime Environment VoirJava Runtime Environment (JRE) installe la machine virtuelle Java, permettant de jouer en ligne, de discuter avec des personnes dans le monde entier, de calculer les intérêts de votre prêt immobilier ou de visualiser des images en 3D. Ces...
Java - Premier programme VoirPremière application avec Java La première chose à faire est de créer un simple fichier texte (sans mise en forme) et de taper les quelques lignes suivantes : // Votre premiere application en Java class FirstApp { public static void main...
Java - Les types de données VoirLes primitives Java est un langage orienté objet, c'est-à-dire que les éléments manipulés sont des classes, ou plus exactement des objets, c'est-à-dire des instances de classes. Toutefois ces objets contiennent des données possèdant un type (et...
J2EE - Java 2 Enterprise Edition VoirIntroduction au Java Framework Le «Java Framework» (Java 2 Platform) est composé de trois éditions, destinées à des usages différents : J2ME : Java 2 Micro Edition est prévu pour le développement d'applications embarquées, notamment sur des...

1

www.szawurski.com, le 26 déc 2008 à 10:37:02

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...

Répondre à www.szawurski.com

2

Tsquare, le 26 déc 2008 à 10:43:42

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...

Répondre à Tsquare

3

scriptiz, le 26 déc 2008 à 11:28:43

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 :

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.

Répondre à scriptiz

4

Tsquare, le 26 déc 2008 à 17:23:57

En fait c'est au niveau de mon if que sa coince parceque mon (ArrayList) test.get(i)
n'est pas forcément un ArrayList mais je ne vois pas comment faire autrement.

Merci.

Répondre à Tsquare

5

scriptiz, le 26 déc 2008 à 17:28:51

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");
	}
}

Répondre à scriptiz

6

 Tsquare, le 26 déc 2008 à 17:33:20

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 ;) ).

Répondre à Tsquare