¿Cómo encontrar la longitud máxima en la lista de cadena mediante corrientes en Java?

David Smith:

Tengo una clase, como a continuación:

public class A
{
    String name;
    String getName(){return name;}
}

Y también tengo una lista, como a continuación:

List<A> list_a = new ArrayList<>();
//add n objects into list_a

En este momento me gustaría encontrar la longitud máxima de objeto que se encuentra en list_a utilizando corrientes en Java. He creado un código como a continuación:

final int max_len = list_a.stream().max(Comparator.comparingInt(A::getName::length));

Pero esto no funciona, quiero decir que es algo malo con la sintaxis. ¿Podrías ayudarme con esto? Gracias.

Pshemo:

Lo que está utilizando no es lambda . Miradas lambda gusta (arguments) -> action. Lo que tiene en A::getNamees la referencia del método , pero adicional ::lengthno es parte de su sintaxis.

En lugar de A::getName::lengthque puede utilizar como lambda a -> a.getName().length().

Sin embargo, el código tiene otro problema. Código

list_a.stream()
      .max(Comparator.comparingInt(A::getName::length));

es la manipulación de las corrientes de Ay maxmétodo llamado de Stream<A>resultará en Optional<A>no int. Es Optionalporque hay una posibilidad de que list_apueden estar vacíos que significa que no habrá resultado válido.

Si desea obtener OptionalInt que se necesita para map Stream<A>que Stream<String>y luego mapa Stream of ints primero. A continuación, puede llamar a su max()método y obtener:

OptionalInt maxOpt  = list_a.stream()
                            .map(A::getName)
                            .mapToInt(String::length)
                            .max();

Cuando ya se tiene OptionalIntse puede utilizar para comprobar si el valor existe isPresent()y hacerlo a través de getAsInt(). También se puede utilizar orElse(defaultValueIfEmpty)como

int max = maxOpt.orElse(-1); //will return value held by maxOpt, or -1 if there is no value

Supongo que te gusta

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