Search in an ArrayList in Java

1

I'm trying to do a search using .contains(); of ArrayList , but I can not return. It is option 3

public class Fruteira {

    public static void main(String[] args) {

      Scanner input = new Scanner(System.in);
      List<Frutas> listaFrutas = new ArrayList<Frutas>();

      int opção = 0;
      char confirma = 'N';
      String pesquisa;

      do{
          System.out.println("Bem-vindo!");
          System.out.println("==========");
          System.out.println("1 - Cadastrar novas frutas");
          System.out.println("2 - Exibir frutas cadastradas");
          System.out.println("3 - Pesquisar por uma fruta");
          System.out.println("9 - Sair");
          opção = input.nextInt();

          switch(opção){
              case 1: 
                Frutas c = new Frutas();
                System.out.println("Digite a fruta que deseja cadastra");
                c.setFruta(input.next());
                listaFrutas.add(c);
                break;

              case 2:
                 for(int i=0; i<listaFrutas.size(); i++){
                     Frutas fruta = listaFrutas.get(i);
                     System.out.println(fruta.getFruta());
                 }

              **case 3:
                  System.out.println("Digite a fruta que deseja conferir");
                  pesquisa = input.next();
                  for(int i=0; i<listaFrutas.size(); i++){
                      Frutas fruta = listaFrutas.get(i);
                      if(listaFrutas.contains(pesquisa)){
                          System.out.println("Contém na lista: "+pesquisa);
                      }
                  }**


              case 9:
                 System.out.println("Tem certeza que deseja sair?");
                 confirma = input.next().toUpperCase().charAt(0);
          }
      } while(confirma != 'S');
    }
}
    
asked by anonymous 04.12.2017 / 19:15

2 answers

4

The contains() will return a boolean only telling you whether or not the object exists in the list.

Example:

listaFruta = ["maça", "banana", "laranja"].
listaFruta.contains("maça"); "Retorna true"
listaFruta.contains("morango"); "Retorna false"

So the best way would be:

System.out.println("Digite a fruta que deseja conferir");
pesquisa = input.next();
if(listaFrutas.contains(pesquisa))
    System.out.println("Contém na lista: "+pesquisa);
else
    System.out.println(pesquisa + "não contém na lista: ");

Analyze whether the search variable actually contains an object of type Fruta as input.

    
04.12.2017 / 19:52
2

This code has logic error and is not efficient, could do so:

for (Fruta fruta : listaFrutas) { //eu chamaria só de frutas
    if (fruta.contains(pesquisa)) {
        System.out.println(pesquisa + "está na lista: ");
        break;
    }
}
    
04.12.2017 / 19:31