私にはList<Users>
があります。私は特定のユーザー名でストリーム内の(最初の)ユーザーのインデックスを取得したい。私は実際にはUser
を.equals()
と記述して、同じユーザ名を持つように、User
を記述する必要はありません。ストリーム最初の要素のインデックスを取得する方法ブール値
私はこれを行う醜い方法(反復とカウント)を考えることができますが、おそらくStreamsを使用してこれを行う良い方法があるように感じる。これまでのところ、私が持っている最高です:
私が今まで書いてきた最悪のコードではありませんが、それは素晴らしいではありませんint index = users.stream()
.map(user -> user.getName())
.collect(Collectors.toList())
.indexOf(username);
。それは柔軟性がありません。あなたが探しているプロパティを記述する.equals()
関数を持つ型へのマッピング関数があることに依存しています。私はむしろ任意のために働くことができる何かを持っているだろうFunction<T, Boolean>
誰か知っている?
です:
これは単純な例ですか? – Andreas
ストリームとインデックスはうまく混合されません。通常、その時点で古いスタイルのループに戻った方が良いでしょう。 –
@Andreasストリームに関して私が気に入っているのは、収集関連のロジックを特定のものから分離することです。この場合、コアの 'Function'とは異なるだけの質問をすることができますので、一般的なコレクションロジックから抽象化する方法があるはずです。 –