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

Java 从特定类的集合中获取所有变量的最佳方法,java,optimization,set,Java,Optimization,Set,我目前使用哈希集,希望获取子类的所有值。我目前的做法如下: HashSet<ChildClass> newSet = new HashSet<ChildClass>(); for (SuperClass item : getSet()) { if (item instanceof ChildClass) { newSet.add((ChildClass) item); } } return newSet HashSet newSet=ne

我目前使用哈希集,希望获取子类的所有值。我目前的做法如下:

HashSet<ChildClass> newSet = new HashSet<ChildClass>();
for (SuperClass item : getSet()) {
    if (item instanceof ChildClass) {
        newSet.add((ChildClass) item);
    }
}
return newSet
HashSet newSet=newhashset();
对于(超类项:getSet()){
if(ChildClass的项目实例){
添加((子类)项);
}
}
返回新闻集

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

这很好,但如果您正在寻找一种更实用的风格,那么您可以:

HashSet<ChildClass> newSet = 
                 getSet().stream()
                         .filter(item -> item instanceof ChildClass)
                         .map(item -> (ChildClass) item)
                         .collect(Collectors.toCollection(HashSet::new));
HashSet新闻集=
getSet().stream()
.filter(项目->子类的项目实例)
.map(项->(子类)项)
.collect(Collectors.toCollection(HashSet::new));

这很好,但如果您正在寻找一种更具功能性的风格,那么您可以:

HashSet<ChildClass> newSet = 
                 getSet().stream()
                         .filter(item -> item instanceof ChildClass)
                         .map(item -> (ChildClass) item)
                         .collect(Collectors.toCollection(HashSet::new));
HashSet新闻集=
getSet().stream()
.filter(项目->子类的项目实例)
.map(项->(子类)项)
.collect(Collectors.toCollection(HashSet::new));

并不特别。这和你得到的一样好。这是一种代码气味。你为什么需要做这样的手术?也许你应该将它们存储在
地图
或类似的地图中?不是特别的。这和你得到的一样好。这是一种代码气味。你为什么需要做这样的手术?也许您应该将它们存储在
地图
或类似地图中?