如何从具有多个对象类型的集合中仅读取类型的特定对象

时间:2015-10-21 11:50:47

标签: java object hashmap set hashset

我有一个包含两种对象类型的集合。我想只将两种类型之一读入一个新的Set。 这样做有一种优雅的方式吗?

2 个答案:

答案 0 :(得分:5)

使用Google Guava的过滤器。

Collections2.filter(yourOriginalCollection, new Predicate<Object>() {
    public boolean apply(Object obj) {
        return obj instanceof TypeYouAreInterestedIn;
    }
});

或者在Java 8中:

Collections2.filter(yourOriginalCollection, (obj) -> obj instanceof TypeYouAreInterestedIn);

答案 1 :(得分:1)

像Suresh所说,没有内置的功能,这里有一些完整的代码:

for(Object obj : yourOldCollection) {
    if(obj instanceof SearchedType){
       yourNewSet.add(obj);
    }
}