-3
オブジェクトのリストはList<Object>
です。どのObjectにString要素が含まれていますか?今すぐ別の文字列リストList<String>
もあります。他の文字列リストに基づくString要素を持つオブジェクトを含むリストの要素をフィルタリングする方法はありますか
私は、最初のリストに2番目のリストの要素であるオブジェクトのみを入れたいとします。
これを行う最も効率的な方法は何ですか?
オブジェクトのリストはList<Object>
です。どのObjectにString要素が含まれていますか?今すぐ別の文字列リストList<String>
もあります。他の文字列リストに基づくString要素を持つオブジェクトを含むリストの要素をフィルタリングする方法はありますか
私は、最初のリストに2番目のリストの要素であるオブジェクトのみを入れたいとします。
これを行う最も効率的な方法は何ですか?
リストのメソッドを使用することができます。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());
をストリーミングします。
ルックアップしたいものは 'List'の代わりに' Set'が必要です。 – RealSkeptic
@ Jean-FrançoisCorbett私は最も簡単な解決策だと思うリストを反復することでそれをやっています。 –