2016-11-22 4 views
-3

オブジェクトのリストはList<Object>です。どのObjectにString要素が含まれていますか?今すぐ別の文字列リストList<String>もあります。他の文字列リストに基づくString要素を持つオブジェクトを含むリストの要素をフィルタリングする方法はありますか

私は、最初のリストに2番目のリストの要素であるオブジェクトのみを入れたいとします。

これを行う最も効率的な方法は何ですか?

+3

ルックアップしたいものは 'List'の代わりに' Set'が必要です。 – RealSkeptic

+0

@ Jean-FrançoisCorbett私は最も簡単な解決策だと思うリストを反復することでそれをやっています。 –

答えて

0

リストのメソッドを使用することができます。equals()は文字列をチェックするので、あなたの場合は便利です。

List<String> otherList = new ArrayList<>(); 
    List<Object> test = new ArrayList<>(); 
    Iterator<Object> it = test.iterator(); 
    while(it.hasNext()){ 
     if(!otherList.contains(it.next().getString())) it.remove(); 
    } 

またはJava8でこれはあなたに新しいListを生成します

test.stream().filter(e -> otherList.contains(e.getString())) 
       .collect(Collectors.toList()); 

をストリーミングします。

関連する問題