Za mojo tabelo Hashtable v Javi bi bilo koristno, če bi imela vrednost strukturo tuple. Katero podatkovno strukturo lahko za to uporabim v Javi?
Hashtable<Long, Tuple<Set<Long>,Set<Long>>> table = ...
Mislim, da v Javi ne obstaja splošni razred tuple, vendar bi bil lahko po meri tako enostaven, kot je naslednji:
public class Tuple<X, Y> {
public final X x;
public final Y y;
public Tuple(X x, Y y) {
this.x = x;
this.y = y;
}
}
Seveda je nekaj pomembnih posledic nadaljnje zasnove tega razreda glede enakosti, nespremenljivosti itd., zlasti če nameravate uporabiti primerke kot ključe za hashanje.
Tukaj je to isto vprašanje drugje, ki vključuje bolj robustno equals
, hash
, ki ga omenja maerics:
V tej razpravi se zrcalita pristopa maerics in ColinD: "ali naj ponovno uporabim razred Tuple z nespecifičnim imenom ali naj vsakič, ko naletim na to situacijo, ustvarim nov razred s specifičnimi imeni". Pred leti sem bil v slednjem taboru, zdaj pa podpiram prvega.
Ustvarite razred, ki opisuje koncept, ki ga dejansko modelirate, in ga uporabite. V njem sta lahko shranjena samo dva Set
in zagotovljeni njuni dostopi, vendar mora biti poimenovan tako, da je razvidno, kaj natančno je vsak od teh sklopov in zakaj so združeni skupaj.