Bonjour
Je cherche à savoir s'il existe une classe ou une facon particulière pour renvoyer un couple en fonction d'un couple...
C'est à dire quelque chose comme
f : (x, y) |--> (x', y')
ou T[i][j] = { 28, 53 } .....
Version imprimable
Bonjour
Je cherche à savoir s'il existe une classe ou une facon particulière pour renvoyer un couple en fonction d'un couple...
C'est à dire quelque chose comme
f : (x, y) |--> (x', y')
ou T[i][j] = { 28, 53 } .....
Code:
1
2
3
4 public T[][] f(x,y) { ... }
Dans le cadre deCitation:
Envoyé par yarf
f: (x,y)| --> (x',y')
tu peux encapsuler x et y dans une classe Point ou Coordonne du coup ta fonction (methode) devientune fonction d'un parametre (un objet de type Point) qui retourne un seul objet (la encore de type point)
Quelque chose de ce style (pas testé) ? Sinon comme indiqué les classes Point, Point2D.Float, Point2D.Double et Dimension peuvent aussi servir à stocker des paires numériques.
EDIT - en réfléchissant un peu... un couple en fonction d'un couple ... ca ressemble plus à un projection donc une Map ferait tout à fait l'affaire l'affaire:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class Pair <T, V> { public T first; public V second; } Pair<Pair<Integer, Integer>, Pair<Integer, Integer>> f = new Pair<Pair<Integer, Integer>, Pair<Integer, Integer>>(); f.first = new Pair<Integer, Integer>(); f.second = new Pair<Integer, Integer>(); f.first.first = x; f.first.second = y; f.second.first = x'; f.second.second = y';
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 Map<Pair<Integer, Integer>, Pair<Integer, Integer>> map = new HashMap<Pair<Integer, Integer>, Pair<Integer, Integer>>(); Pair<Integer, Integer> key = new Pair<Integer, Integer>(); key.first = x; key.second = y; Pair<Integer, Integer> value = new Pair<Integer, Integer>(); value.first = x'; value.second = y'; map.put(key, value); ... Pair<Integer, Integer> result = map.get(key);
Note : penser à redéfinir la méthode equals() et getHashCode() dans la classe Pair. Sinon utiliser des Points, ... à la place d'une paire.
Merci !
Et selon vous laquelle est la plus rapide ?
Ben ca dépend de l'usage que tu veux en faire.
Si la transformation f qui permet de passer de (x,y) à (x',y') est affine tu peux toujours utiliser la classe AffineTransform et Point2D pour parvenir très facilement à tes fins.
C'est pour faire un backtracing dans une matrice. Pour chaque case, il faut stoquer quelle case lui a induit sa valeur.