El método get (int) en la lista Tipo <String> no es aplicable para la cadena de argumentos en Java 8

user9608350:

Estoy tratando de buscar un elemento en una List<String>y me sale este error de compilación:

el método get(int)en el tipo List<String>no es aplicable para la cadena del argumento.

Este es el código:

private boolean findIdInTheList(List<String> ids, String id) {
    String theId = ids.stream()
            .filter(elem -> id.equals(ids.get(elem)))
            .findAny()
            .orElse(null);
}
Eran :

idses una List<String>y elemes una String. Por lo tanto ids.get(elem)no es válido, ya que Listno tiene ningún getmétodo que toma una String.

Debería ser:

private boolean findIdInTheList(List<String> ids, String id) {
    String theId = ids.stream()
                      .filter(elem -> id.equals(elem))
                      .findAny()
                      .orElse(null);
}

Ah, y ya que su método tiene un booleantipo de retorno, se debe añadir una instrucción de retorno.

Se puede simplificar la tubería con anyMatch:

private boolean findIdInTheList(List<String> ids, String id) {
    return ids.stream()
              .anyMatch(elem -> id.equals(elem));
}

Aquí puede obtener una booleanque indica si idse encuentra en el List. No veo ningún punto en la devolución de la Stringmisma, puesto que ya sabe que es igual a id.

Supongo que te gusta

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