Bonjour tout le monde,
j'ai un petit soucis sur l'accès sur un MAP, je vais essayer de faire cours,
voila comment je remplis le MAP :
Tout en sachant que Position ici est une interface et ai une Enum;
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 final ArenaItem ai; mat.put(new Position() { @Override public int getX() { return x; } @Override public int getY() { return y; } @Override public boolean equals(Object arg0) { if (!(arg0 instanceof Position)) { return false; } Position p = (Position) arg0; return this.getX() == p.getX() && this.getY() == p.getY(); } @Override public int hashCode() { Integer x1 = x; Integer y1 = y; return Integer.rotateLeft(x1.hashCode(), 16) ^ y1.hashCode(); } }, ai);
Et j'y accede par la méthode suivante, je créé en faite un nouveau Position que j'envois à une méthode pour faire un get
Voici le get
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 for (int x = 0; x < model.getWidth(); x++) { for (int y = 0; y < model.getHeight(); y++) { final int i = x; final int j = y; setCellElements(new Position() { @Override public int getY() { return j; } @Override public int getX() { return i; } @Override public boolean equals(Object arg0) { if (!(arg0 instanceof Position)) { return false; } Position p = (Position) arg0; return this.getX() == p.getX() && this.getY() == p.getY(); } }); } }
Mon problème est que le arenaMap.get(pos) me renvoi toujours null, alors si vous avez une idée je suis preneur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 private void setCellElements(Position pos) { ArrayList<ArenaItem> elements = new ArrayList<ArenaItem>(); elements.add(arenaMap.get(pos)); model.setDeffered(pos.getX(), pos.getY(), elements); }
Merci pour votre temps
Partager