首页 > 解决方案 > 使用流 java 从另一个抽象类中过滤和排序列表

问题描述

我有一个抽象类,它是一个列表Collection,它有三个继承该类的类Collection。他们是Ground, Sky and Sea。现在我想从另一个班级中选择其中一种类型并订购它。

public List<Collection> getCollectionsPerType(String type){
List<Integer> collection= collection.stream()   
.filter(collection -> collection.getType() == Collection.??) 

我到了这里,但后来我意识到我不知道如何从列表中获取类型。我还有另一个问题,stream()我必须在 Collection 类中创建方法吗,因为这是 Eclipse 所说的。

标签: javainheritancecollectionsjava-stream

解决方案


你可以groupingBy用作收集器,如果你是这个意思的话——这并不完全清楚。

public List<Collection<?>> getCollectionByType(Class<?> type) {

    Map<Class<?>, List<Collection<?>>> map = 
        collections.stream()
                   .collect(Collectors.groupingBy(Object::getClass));

    return map.get(type);
}

推荐阅读