[java] Problème à définir une variable

Fermé
Guigui - 4 mars 2009 à 11:18
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 - 4 mars 2009 à 21:54
Bonjour,

J'ai une ArrayList avec les premiers nombres premiers. Mais au moment de les récupérer pour les réutiliser je n'y arrive pas. (je débute ...) Voici mon code :



List liste = new ArrayList();

int d=2;
liste.add((int) 2);
liste.add((int) 3);
liste.add((int) 5);


int e= liste.get(d); <---- c'est cette ligne qui pose problème, Eclipse ne me l'accepte pas, il me propose
int e = (int) liste.get(d); mais ça ne marche pas non plus



Le but est de pouvoir utiliser ma variable e comme int.



Y a-t-il une autre syntaxe ?
Faut-il que j'utilise une autre classe que ArrayList ? Vector peut-être ? Quelle est la différence ?


Merci
A voir également:

1 réponse

Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 329
4 mars 2009 à 21:54
Bonsoir,
Tu utilises une syntaxe Java correcte mais démodée (en fait maintenant on écris ça différemment car Java a évolué et propose des syntaxes plus optimisées). Je vais donc écrire comme il est aujourd'hui conseillé d'écrire (par contre il faut que tu aies une JVM capable d'exécuter du java5, sinon ça va ne pas fonctionner).

List<Integer> list = new ArrayList<Integer>();
list.add(2);
list.add(3);
list.add(5);

int d = 2;
		
Integer a = list.get(d);


En fait on utilise ici la généricité (qui consiste à dire quel type d'objets va contenir la liste). Une liste ne peut contenir que des objets, autrement dit des instances de classe. On ne peut donc pas contenir de types primitifs (donc pas d'int), mais on peut utiliser la classe Integer qui va être l'objet contenant un int !
Lorsque l'on fait list.add(2); 2 est un int, mais va être automatiquement casté en Integer.
Enfin, list.get(d) retourne l'instance contenue en d-ième position de la liste (c'est donc une instance d'Integer qui est retournée). Pour récupérer l'int stocké dans cet Integer, tu peux faire int aEnInt = a.intValue();

Cordialement,
0