Cambio de valor de un campo de un objeto dentro de un ArrayList usando corriente, hacer el código más eficiente

Bogdan Blaj:

Tengo dentro de una ArrayListcon un número finito de objetos. Quiero mirar dentro de la lista para un valor específico en el campo y luego cambiarlo.

Tengo la siguiente aplicación.

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);
}

Este código funciona, pero las corrientes no son mi especialidad, mi pregunta es: ¿puedo tener el mismo comportamiento con la diferencia de que no necesito para hacer el extra si? Me siento como el "si" es algo extra y me gustaría hacer mi código más eficiente.

Una cuestión lado hay una manera de utilizar la corriente en caso de tener múltiples entradas con el mismo nombre, por lo que en lugar de ".findFirst () .orElse (nulo)" ¿Qué puedo usar para almacenarlo dentro del objeto o persona posible nuevo matriz de objetos.

Andrónico:

Se puede reducir el código mediante el uso de Optional#isPresent:

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

Pero si yo buscaba para el rendimiento, arroyos no sería mi primera opción.

Si desea procesar todos los objetos, que cumplen el predicado:

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

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=331394&siteId=1
Recomendado
Clasificación