我有多个树集,它们都有不同的值。我试图从每个树集中获取匹配的元素,并将其放在一个最终的树集中。
所以我要找的是
树集1有一个b c d
树集2有b d e g
和树集三有b e d h
我的返回树集将有b和d
我试过的代码是
TreeSet<String> uniqueWords = uniqueWords(words);
TreeSet[] results = new TreeSet[uniqueWords.size()];
int i = 0;
for (String word : uniqueWords) {
// get will return a TreeSet
results[i] = ((TreeSet)HashMap.get(word));
if (results[i] == null) {
return new TreeSet();
}
i++;
}
TreeSet finalList = new ReferenceSet();;
for (int step = 1; i < results.length; step++) {
finalList.retainAll(results[step]);
}
return finalList;`
答案 0 :(得分:1)
您正在寻找的是多个集合的交集,可以通过Collection#retainAll
实现(正如您在问题中已有的那样)。如果您希望最终Set
分开(而不是三个初始Set
之一),您可以使用以下内容:
SortedSet<String> intersection = new TreeSet<>(setA);
intersection.retainAll(setB);
intersection.retainAll(setC);
以下是一个例子:
var setA = new TreeSet<>(List.of("a", "b", "c", "d"));
var setB = new TreeSet<>(List.of("b", "d", "e", "g"));
var setC = new TreeSet<>(List.of("b", "e", "d", "h"));
var intersection = new TreeSet<>(setA);
intersection.retainAll(setB);
intersection.retainAll(setC);
System.out.println(intersection);
输出:
[b, d]