Searching an Arraylist in Java

Asked

Viewed 1,166 times

2

I’m trying to do a search using the .contains(); of ArrayList, but I can’t return. It’s 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');
    }
}
  • In his if you’re comparing your fruit list instead of the fruit itself. change listaFrutas for fruta, that you stated a line above, see if it resolves.

2 answers

4

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;
    }
}

I put in the Github for future reference.

4


The contains() will return a Boolean only stating whether the object exists or not in the list.

Example:

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

Then 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 as input an object of type Fruta.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.