我有一个包含两种对象类型的集合。我想只将两种类型之一读入一个新的Set。 这样做有一种优雅的方式吗?
答案 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);
}
}