Pesquisa em um ArrayList java

Gostaria de saber como eu podia fazer uma pesquisa em uma arraylist, passando um determinado valor e retornando todos os dados que contem o valor passado?

exemplo: Usuario cadastra uma Serie, passando titulo, sinopse, temporada, ep e se for vista ou nao.
Podendo faze uma pesquisa, por titulo e se foi vista ou nao.

quando eu passo o valor para a pesquisa esta retornando apenas um conjunto por vez.
Se tiver mais de uma serie com status = S retorna apenas uma delas em vez de todas.

=> faz pesquisa
public void pesquisarStatus() {
System.out.println("==> PESQUISAR! ");
System.out.println("Vista S|N : “);
status = leitorString.next();
if (!(SerieArray.getListSeries().isEmpty())) {
System.out.println(”==> "+ SerieArray.pesquisarStatus(status));
}
}

=> Procura no ArrayList
static public String pesquisarStatus(String status){
for(Serie s : listSerie){
if(s.getStatus().equalsIgnoreCase(status)){
return s.mostrar();
}
}
return status;
}

Sou novo com Java. Agradeço muito a ajuda :slight_smile:

O que estás aqui a fazer é, retorna o primeiro que faça match com a pesquisa. Se não encontrar nenhum, retorna a string pesquisada.

Se queres devolver vários resultados, terás de retornar uma lista e não apenas uma String

public List<String> pesquisarStatus(String status){
  List<String> resultados = new ArrayList(); // cria a lista para retornar
  for(Serie s : listSerie){
    if(s.getStatus().equalsIgnoreCase(status)){
      resultados.add(s.mostrar()); // se encontra, adiciona à lista
    }
  }
  return resultados; // retorna a lista. Será vazia se nenhum resultado foi encontrado 
}

E era assim que se fazia no velho java (e ainda funciona). Mas, desde o java 8, com streams, tens maneira mais fácil de fazer a mesma coisa.

List<String> pesquisarStatus(String status){
  return listSerie
     .stream() // percorre a lista
     .filter(s -> s.getStatus().equalsIgnoreCase(status)) // filtra o status
     .map(Serie::mostrar) // pega o retorno de mostrar
     .collect(Collectors.toList()); // adiciona a uma lista
}

Muito obrigado pela ajuda, Deu tudo certo :slight_smile: