In Anbetracht des folgenden Codes und der Tatsache, dass die 4 HashSet
s an anderer Stelle bestückt sind.Wie berechne ich Schnittmengen zwischen mehr als zwei HashSets?
Mein Ziel ist es, alle Elemente zu enthalten, die in allen 4 HashSets üblich sind.
Meine Frage ist zuerst, mache ich es richtig? Zweitens, wenn ich es richtig mache, gibt es einen besseren Weg, es zu tun? Wenn nicht, welche Lösung habe ich für dieses Problem?
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);
}
Also mache ich nur überreagieren, um den ersten Satz jedes Mal zu füllen, wenn ich 'retainAll()' verwende? Ich habe mir nur Sorgen gemacht, dass wenn Informationen verloren gehen. – lonesome
Wenn ein Element wirklich allen vier Sets gemeinsam ist, müssen Sie es nicht hinzufügen (denken Sie einen Moment darüber nach). –
Ja, scheint ungefähr richtig. – lonesome