Se ho una classe Pair come questa:
class Pair<K, L>{
public final K a;
public final L b;
public Pair(K obj1, L obj2){this.a = obj1; this.b = obj2;}
//...
}
Voglio associare un Float
a ogni coppia di oggetti. Sono dello stesso tipo, quindi l'oggetto Pair sarà Pair<SomeType, SomeType>
. È abbastanza naturale inserirli in Map<Pair<SomeType, SomeType>, Float>
.
Il fatto è che non voglio che l'ordine degli oggetti in questa coppia sia importante. Voglio dire, una volta inserito un Pair<SomeType, SomeType> myPair
tale che myPair.a = obj1
, myPair.b = obj2
nella Mappa, mi piacerebbe essere in grado di recuperare lo stesso valore con l'oggetto Pair
invertito, tale che a = obj2
, b = obj1
.
Va bene inserire due coppie sulla mappa in entrambi gli ordini in questo caso, ovvero new Pair(a, b)
e new Pair(b, a)
? In questo modo sono sicuro che indipendentemente da come gli oggetti sono ordinati nella coppia, otterrò il valore corretto. Tuttavia ci vuole il doppio spazio e crea problemi quando si tenta di rimuovere una coppia chiave-valore dalla mappa (ho bisogno di rimuovere entrambi). Forse è bello creare un metodo che si occuperà di inserire e rimuovere entrambe le coppie dalla mappa?