2015-10-21 8 views
6

2つのオブジェクトタイプを持つコレクションがあります。私は2つのタイプのうちの1つを新しいセットにのみ読み込みたいです。 これを行うにはエレガントな方法がありますか?複数のオブジェクトタイプを持つコレクションから特定のタイプの特定のオブジェクトのみを読み取る方法

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

あなたは別のマップ '地図<文字列、地図>'にそのマップをラップし、theyr actuallクラスによってオブジェクトを区切ることができます。 – SomeJavaGuy

+0

org.apache.commons.collections4.Predicateクラスを使用すると、エレガントな方法で処理できます。 –

答えて

5

使用するGoogleグァバのフィルタ:

+0

@ M156 Java 8のフィルタ –

+1

に感謝します。これらのラムダ式は最終的にJava 8に到着したようなクールな機能だと思うので、D – M156

1

同様スレシュには、機能的に完全なコードのここにいくつかの並べ替えが構築されていないと述べました。

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

またはJava 8:

Collections2.filter(yourOriginalCollection, (obj) -> obj instanceof TypeYouAreInterestedIn); 
関連する問題