从特定类中获取集合中所有变量的最佳方法

时间:2018-04-02 17:16:17

标签: java optimization set

我目前正在使用HashSet并希望获得子类的所有值。我目前这样做:

HashSet<ChildClass> newSet = new HashSet<ChildClass>();
for (SuperClass item : getSet()) {
    if (item instanceof ChildClass) {
        newSet.add((ChildClass) item);
    }
}
return newSet

但我想知道是否有更好的方法可以做到这一点,也许还有另一种设置?

1 个答案:

答案 0 :(得分:3)

这很好,但是如果你正在寻找更实用的风格,那么就可以做到:

HashSet<ChildClass> newSet = 
                 getSet().stream()
                         .filter(item -> item instanceof ChildClass)
                         .map(item -> (ChildClass) item)
                         .collect(Collectors.toCollection(HashSet::new));