ArrayList<Object> [Résolu]

Messages postés
7
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
17 avril 2011
- - Dernière réponse : tunisiano22
Messages postés
7
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
17 avril 2011
- 6 oct. 2010 à 16:31
Bonjour ts le monde,

svp j'ai besoin d'aide, je veux savoir :
1- si possible d'enregistrer dans une même List plusieurs Object de type differents.
2- Comment manipuler les ArrayList<Object>? j'ai testé mais les données insérer ne sont pas les mêms récupérer??
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
6449
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
278
3
Merci
Il y a une solution plus propre que faire une ArrayList<Object>, je ne sais pas combien de types différents tu veux mettre dans ton arrayList, admettons qu'il y ait deux types d'objets différents nommés Classe1 et Classe2. Si tu les met dans la meme liste, c'est que ces classes ont au moins une méthode commune, cette méthode on va dire que c'est afficher() Tu fais comme ceci :
public interface Interface {
   //Donne un nom plus parlant à l'interface
   // La tu définis les méthodes obligatoirement présentes
   public void afficher();
}

public class Classe1 implement Interface{
   public void afficher(){
      System.out.println("classe 1");
   }

}
public class Classe2 implement Interface{
   public void afficher(){
      System.out.println("classe 2");
   }
}



   List liste = new ArrayList();
   liste.add(new Classe1());
   liste.add(new Classe2());

   for(Interface i : liste){
      i.afficher();
   }



Et la, merci le polymorphisme, tu auras dans la console :
classe 1
classe 2

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 116 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Julien39
Messages postés
5331
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 avril 2019
105
0
Merci
Salut,

Je ne sais pas trop si j'ai bien compris le sens de ta question mais bon voici un exemple pour te répondre :
public class Test {

  private static class PourTest { } // classe pour le test

  public static void main(String[] args) {
    List<Object> list = new ArrayList<Object>();
    list.add(10); // ajout d'un Integer
    list.add(0.5f); // ajout d'un Float
    list.add(1000L); // ajout d'un Long
    list.add(true); // ajout d'un Boolean
    list.add("plop"); // ajout d'un String
    list.add(new PourTest()); // ajout d'un objet
    
    for(Object o : list) {
      if(Integer.class.isInstance(o)) {
        int i = (Integer)o;
        System.err.println("Objet de type int : " + i);
      } else if(Float.class.isInstance(o)) {
        float f = (Float)o;
        System.err.println("Objet de type float : " + f);
      } else if(Long.class.isInstance(o)) {
        long l = (Long)o;
        System.err.println("Objet de type long : " + l);
      } else if(Boolean.class.isInstance(o)) {
        boolean b = (Boolean)o;
        System.err.println("Objet de type boolean : " + b);
      } else if(String.class.isInstance(o)) {
        String s = (String)o;
        System.err.println("Objet de String : " + s);
      } else if(PourTest.class.isInstance(o)) {
        PourTest pt = (PourTest)o;
        System.err.println("Objet de type PourTest : " + pt);
      }
    }
  }
}


Faire un mixte d'objets dans tes listes n'est pas super safe mais bon ...


------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
Commenter la réponse de Twinuts
Messages postés
7
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
17 avril 2011
0
Merci
Merci bcp pour votre repenses. Je veux dire par Object, une instanciation de classe. Mon Arraylist comportera un nbr important d'Objet dont le type n'est le même (type Personne, voiture ?exple) je pense que je vais faire un ArrayList par type d'Objet.
pour le deuxième point est ce qq'1 peut m'aider? j'arrive tj pas à avoir les mêmes données enregistrés: si par exple je fais :
BTS A = new BTS (AZ, AZ,..);
BTS B = new BTS (AZ, AZ,..);
ArrayList bts = new ArrayList();
bts.add(A);
bts.add(B);
.....
bts.get(1)
j'aurai comme resultat ----> [Trswc@bgs

Merci d'avance.
Commenter la réponse de tunisiano22
Messages postés
6449
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
278
0
Merci
Je pense que ce que tu décris par [Trswc@bgs est une adresse mémoire, redéfinit la méthode toString() dans la classe BTS et ca ira.

Je pense que tu gagnerais à créer une interface, ca t'éviterais d'insérer tout et n'importe quoi dans ta liste, mais tu fais comme tu préfères.
Commenter la réponse de cs_Julien39
Messages postés
7
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
17 avril 2011
0
Merci
Ok,
Merci bcp
Commenter la réponse de tunisiano22

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.