Considerando il codice sottostante e il fatto che i 4 HashSet
s sono popolati altrove.Come si calcola l'intersezione tra più di due HashSet?
Il mio obiettivo è quello di contenere tutti gli elementi comuni in tutti e 4 i hash.
La mia domanda è che prima di tutto sto facendo bene? In secondo luogo, se lo sto facendo bene, c'è un modo migliore per farlo? In caso contrario, quale soluzione ho per questo problema?
static Set<String> one=new HashSet<>();
static Set<String> two=new HashSet<>();
static Set<String> three=new HashSet<>();
static Set<String> four=new HashSet<>();
private static void createIntersectionQrels() {
ArrayList<String> temp = new ArrayList<>();
Set<String> interQrels = new HashSet<>();
temp.addAll(one);
one.retainAll(two);
interQrels.addAll(one);
one.addAll(temp);
one.retainAll(three);
interQrels.addAll(one);
one.addAll(temp);
one.retainAll(four);
interQrels.addAll(one);
one.addAll(temp);
interQrels.retainAll(two);
interQrels.retainAll(three);
interQrels.retainAll(four);
}
Quindi sto facendo un eccesso di reazione per popolare il primo set ogni volta che uso 'retainAll()'? Sono solo preoccupato che se alcune informazioni vengono perse. – lonesome
Se un elemento è davvero comune a tutti e quattro i set, non è necessario continuare ad aggiungerlo (pensaci per un momento). –
Sì, sembra giusto. – lonesome