Comparar array list com uma String qualquer

5 respostas
D

Boa noite,
Estou fazendo um programa, e em um dos itens, eu preciso comprarar os valores de uma array list que é determinada pelo usuário com uma String que também é determinada pelo usuário.`

As classes:

Classe BDVeicVet.java
import java.util.ArrayList;
import java.util.Scanner;

public class BDVeicVet{
	
	ArrayList<Passeio> list = new ArrayList<Passeio>();
        int cont = 0;

        String resposta;	
	boolean continuar = true;
        int somaVeiPas = 0;
	Passeio veiculopas = new Passeio();
 
        public void cadPasseio(int cont){
		
		do{
		if(cont>50){
			System.out.println("\nO numero maximo de veiculos de passeio ja 

foram cadastrados!");
		}
		
		else{

		Scanner c = new Scanner(System.in);

		System.out.println("\nInforme a placa do Veiculo: ");
		veiculopas.setPlaca(c.next());

		System.out.println("Informe a marca do veiculo: ");
		veiculopas.setMarca(c.next());

		System.out.println("Informe o modelo do veiculo: ");
		veiculopas.setModelo(c.next());

		System.out.println("Informe a cor do veiculo: ");
		veiculopas.setCor(c.next());

		System.out.println("Informe a quantidade de rodas do veiculo: ");
		veiculopas.setQtdRodas(c.nextInt());
		
		System.out.println("Informe a velocidade max do veiculo: ");
		veiculopas.setVelocMax(c.nextInt());
	
		System.out.println("Informe a quantidade de passageiros: ");
		veiculopas.setQtdePassageiro(c.nextInt());

		System.out.println("\nCadastro efetuado com sucesso!\n");
		cont++;
		list.add(veiculopas);

		System.out.println("Deseja cadastrar outro veiculo do mesmo tipo? 'S' - 

Sim ou 'N' - Nao");
		resposta = c.next();

		if(resposta.equals("N")){
			continuar = false;
		}
	

		}
		}while(continuar == true);
		somaVeiPas = somaVeiPas + cont;
	}
}

Essa é apenas uma das classes, enfim, o usuário irá informar a placa, modelo, cor…,etc do veiculo. O que eu quero fazer é que ele informe uma String Placa e no meio dessa lista de diversos veículos o programa procure pela placa igual.
Como fazer isso?

Obrigado.

5 Respostas

H

Tente algo tipo isso.

for(Passeio p: list){
    if(veiculopas.getPlaca().equals(p.getPlaca())){
        //faça alguma coisa quando a placa for igual
        System.out.println("Placa  informada!");
    }
 }
peczenyj

Uma outra forma é ao inves de ter um arraylist, usar um Map<String, Veiculo> usando a placa como chave e o veiculo como valor.

dessa forma se a chave ja existe vc informa na hora.

D
Consegui comparar utilizando:

for(Passeio x : list){

if(PlacaVei.equals(x.getPlaca()))

Mas e se eu quiser alterar as informações do veículo que está com essa placa? Assim que encontrar a placa, eu posso alterar as informações usando veiculopas.getMarca, veiculopas.getModelo?

igorventurelli

Usando os getters não… Mas sim os setters.
Acho que você quer saber se apenas utilizando esses metodos vai conseguir alterar os atributos do objeto dentro da lista, certo?
Vai sim.

O código abaixo alterará a marca do carro de GM para Honda:

public static void main(String[] args) {
    List<Passeio> passeios = new ArrayList<Passeio>();
    
    Passeio meuVeiculoPasseio = new Passeio("XYZ-0000", "GM", "Captiva");
    
    passeios.add(meuVeiculoPasseio);
    passeios.add(new Passeio("A", "AA", "AAA"));
    passeios.add(new Passeio("B", "BB", "BBB"));
    
    for(Passeio p : passeios) {
        if("XYZ-0000".equals(p.getPlaca())) {
            p.setMarca("Honda");
        }
    }
    
    System.out.println(meuVeiculoPasseio.getMarca());
}

Saída: Honda

peczenyj

convertendo para um Map

List<Passeio> passeios = new ArrayList<Passeio>();

Passeio meuVeiculoPasseio = new Passeio("XYZ-0000", "GM", "Captiva");
/* add arrayist passeios */

Map<String,Passeio> map = new HashMap<String,Passeio>();
for (Passeio p : passeios) map.put(p.getPlaca(),p);

if( map.containsKey( "XYZ-0000" ) ) {
  map.get("XYZ-0000").setMarca("Honda");
}

Ai esta um bom momento para se falar em Tiny Types

Por exemplo, vc tem a Placa, que é uma string, mas vc pode criar uma

public class Placa {
   private String value;
   public Placa( String value ){ this.value = value; }
   public String getValue() { return this. value; }
   public String toString() { return this.getValue(); }
}

Parece inutil mas quando vc tem strings soltas como GM, Captiva, etc, pode ser interessante vc criar um pequeno objeto que representa esse valor em particular.

perceba que isso

new Passeio(XYZ-0000, GM, Captiva);

new Passeio(GM, Captiva, XYZ-0000);

new Passeio( Captiva, XYZ-0000, GM);

geram 3 objetos diferentes mas apenas um faz sentido.

se fizer sentido, pense em faze-lo.

Criado 26 de setembro de 2016
Ultima resposta 28 de set. de 2016
Respostas 5
Participantes 4