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 tipoList<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 :
ids
es una List<String>
y elem
es una String
. Por lo tanto ids.get(elem)
no es válido, ya que List
no tiene ningún get
mé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 boolean
tipo 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 boolean
que indica si id
se encuentra en el List
. No veo ningún punto en la devolución de la String
misma, puesto que ya sabe que es igual a id
.