コードをより効率的に、ストリームを使用して、ArrayListの内部オブジェクトのフィールドの値を変更

ボグダンBlaj:

私は内部で持っているArrayListオブジェクトの有限数を持ちます。私は、フィールド内の特定の値のためのリストの中を見た後、それを変更したいです。

私は、次の実装を持っています。

String searchName = searchedName; //from outside we provide this
Person person = personList.stream()
        .filter(personList -> searchName.equals(personList.getName()))
        .findFirst()
        .orElse(null);
if (person != null){
    person.setName(replacement);
}

このコードの作品が、ストリームは私の専門ではありません、私の質問は:私は私があれば、余分なを作成する必要がないことの違いと同じ振る舞いを持つことができますか?私は何かの余分であると私は私のコードをより効率的にしたいと思い、「もし」のように感じます。

サイドの質問は、私は人のオブジェクトや新しい可能な内部でそれを保存するために使用することができます私たちは代わりに「.findFirst().orElse(ヌル)」の、同じ名前を持つ複数のエントリを持っている場合には、ストリームを使用する方法がありますオブジェクトの配列。

アンドロニカス:

あなたは使用してコードを減らすことができますOptional#isPresent

personList.stream()
          .filter(personList -> searchName.equals(personList.getName()))
          .findFirst()
          .ifPresent(person -> person.setName(replacement));

私は、パフォーマンスのために目指していた場合でも、ストリームは、私の最初の選択肢ではないでしょう。

あなたは述語を満たすすべてのオブジェクトを、処理したい場合は:

personList.stream()
          .filter(personList -> searchName.equals(personList.getName()))
          .forEach(person -> person.setName(replacement));

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=331391&siteId=1