Effectivement il y avait ca aussi, mais le NullPointer doit etre du au faite que la List n'est pas initialise.
Edit: Tu devrais plutot un ArrayList() car chez moi un new List<Rep> produit une erreur.
Effectivement il y avait ca aussi, mais le NullPointer doit etre du au faite que la List n'est pas initialise.
Edit: Tu devrais plutot un ArrayList() car chez moi un new List<Rep> produit une erreur.
Pour pas etre embeter de savoir si on a initialiser ou pas cet age tu peux faire comme cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 HashMap<Integer, ArrayList<Rep>> h = new HashMap<Integer, ArrayList<Rep>>(); Rep r=new Rep("Pierre", 12); if (h.get(r.getage()) == null) h.put(r.getage(), new ArrayList<Rep>()); h.get(r.getage()).add(r); Rep r1=new Rep("Pierre", 12); if (h.get(r1.getage()) == null) h.put(r1.getage(), new ArrayList<Rep>()); h.get(r1.getage()).add(r1); Rep r2=new Rep("Michelle", 12); if (h.get(r2.getage()) == null) h.put(r2.getage(), new ArrayList<Rep>()); h.get(r2.getage()).add(r2);
Il faut aussi faire un test si il y a aucune personne d'un age donne sinon tu va avoir un nullpointer:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 int nbj; int nbATester = 0; if (h.get(nbATester) != null) nbj=h.get(nbATester).size(); else nbj = 0;
merci, encore, maintenant ça tourne avec ce code :
Mais il me dit qu'il n'y a qu'une personne ayant 12 ans
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 import java.util.*; class Rep implements Comparable<Rep> { private String nom; private int age; Rep(String nomf, int agef) { nom=nomf; age=agef; } public String getnom() { return nom; } public int getage() { return age; } public int compareTo(Rep o) { if( this.age < o.getage()) return 1; if( this.age == o.getage()) return 0; else return -1; }; } public class Memeage1 { public static void main(String args[]) { HashMap<Integer, List<Rep>> h = new HashMap<Integer, List<Rep>>(); Rep r=new Rep("Pierre", 12); h.put(r.getage(), new ArrayList<Rep>()); h.get(r.getage()).add(r); Rep r1=new Rep("Jean", 12); h.put(r1.getage(), new ArrayList<Rep>()); h.get(r1.getage()).add(r1); Rep r2=new Rep("Michelle", 12); h.put(r2.getage(), new ArrayList<Rep>()); h.get(r2.getage()).add(r2); int nbj; nbj=h.get(12).size(); System.out.print("*"+nbj+"*"); System.out.println(); } }
Regarde mon post precedant je l'ai edite
Car la tu remets la List a 0 a chaque fois.
Désolé, ça ne marche pas chez moi, mais ça ajoute des erreurs.
Je ne comprend pas la logique, non plus :
tu test h.get(r.getage())
tu force 12
et tude nouveau.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 h.get(r.getage()).add(r);
As tu lu mon dernier post ça marche, mais en comptant mal ?
Enfaite c'est bien ca :
Le 12 etait une erreur, pour la logique je test si h.get(r.getage()) est null si c'est le cas je put pour cette tranche d'age une nouvelle list sinon je le fait pas sinon ca reset tous.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 HashMap<Integer, ArrayList<Rep>> h = new HashMap<Integer, ArrayList<Rep>>(); Rep r=new Rep("Pierre", 12); if (h.get(r.getage()) == null) h.put(r.getage(), new ArrayList<Rep>()); h.get(r.getage()).add(r); Rep r1=new Rep("Pierre", 12); if (h.get(r1.getage()) == null) h.put(r1.getage(), new ArrayList<Rep>()); h.get(r1.getage()).add(r1); Rep r2=new Rep("Michelle", 12); if (h.get(r2.getage()) == null) h.put(r2.getage(), new ArrayList<Rep>()); h.get(r2.getage()).add(r2);
J'ai été déconnecté, génial.
Je vais être prudent, procéder aussi avec des verif.
Merci beaucoup
Partager