【问题标题】:How to read only specific objects of a type from a collection with multiple object types如何从具有多种对象类型的集合中仅读取一种类型的特定对象
【发布时间】:2016-01-20 09:44:29
【问题描述】:

我有一个包含两种对象类型的集合。我只想将这两种类型中的一种读入一个新的集合中。 有没有一种优雅的方式来做到这一点?

【问题讨论】:

  • 您可以将该地图包装到另一个地图Map<String,Map<WhateverObject,WhateverObject>> 中,并按它们的实际类分隔对象。
  • 您可以使用 org.apache.commons.collections4.Predicate 类来优雅地处理。

标签: java object hashmap set hashset


【解决方案1】:

使用 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);

【讨论】:

  • 没问题,我认为这些 lambda 表达式是一个很酷的特性,终于到了 Java 8,所以我们必须传播这个词:D
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-03
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-13
    • 1970-01-01
    相关资源
    最近更新 更多