我目前正在使用HashSet并希望获得子类的所有值。我目前这样做:
HashSet<ChildClass> newSet = new HashSet<ChildClass>();
for (SuperClass item : getSet()) {
if (item instanceof ChildClass) {
newSet.add((ChildClass) item);
}
}
return newSet
但我想知道是否有更好的方法可以做到这一点,也许还有另一种设置?
答案 0 :(得分:3)
这很好,但是如果你正在寻找更实用的风格,那么就可以做到:
HashSet<ChildClass> newSet =
getSet().stream()
.filter(item -> item instanceof ChildClass)
.map(item -> (ChildClass) item)
.collect(Collectors.toCollection(HashSet::new));