Buscar qualificação no objeto

Olá pessoal,

Imaginem que tenho um objeto pessoa que tem várias qualificações em boolean
exemplo:
pessoa.cabeloCurto = false;
pessoa.bemArrumada = true;
pessoa.cheirosa = true;
pessoa.feia = false;
etc… etc…
ok, ok a sintaxe não é bem assim, mas é só pra entender …

agora tenho que verificar se essa pessoa tem as qualificações solicitadas pelo usuário

por exemplo, se o usuário solicitou uma pessoa cheirosa, pouco importa se ela é feia ou não, deve ser cheirosa e é isso q importa

teria como fazer algo cheio de if mais ou menos assim

verificaQualificacao(boolean cabeloCurto, boolean bemArrumada, boolean cheirosa, boolean feia){if… if… if… return true ou false…}

verificar cheirosa:
boolean cheirosa = verificaQualificacao(tantofaz, tantofaz, true, tantofaz);

ou assim:

boolean cheirosa = verificaQualificacaoObjeto(pessoaPopuladaPorStruts);

acho que ficaria pouco elegante e dependendo do numero de qualificações pode se tornar uma função absurdamente grande

Gostaria de idéias de como resolver isso de uma maneira mais interessante.

Obrigado.

P.S: se eu pudesse usar consulta ao banco de dados seria facil, mas tem q ser com objetos já populados…
P.S.2: não é um sistema de bordel, kkkk, isso foi um exemplo q achei para facilitar a explicação…

você pode fazer a busca de dados com essas condições, acredito que será uma boa pedida dessa forma.

Vc
Quer dizer
No banco ???

exato.
Acredito que a implementação ficará mais fácil além de ficar menos coisa na memória principal, já que terá somente o que você buscar.

Como eu já tinha informado, nao tenho essa possibilidade.
Isso é na verdade um array de objetos e é feita uma comparação a cada milissegundo.
Seria muito custoso buscar no banco.
A grande sacada é uma forma de implementar isso sem usar o banco…
O problema é, como fazer isso ???

Cara vc poderia usar um hashmap pra fazer isso…

onde vc teria a chave o valor no seu caso bonita, e este traria um lista de objetos de pessoas bonitas…

ex:

	public class Teste {  
	  public static void main(String args[]) {  
		  
		 Map<String,String> map = new HashMap<String,String>();
		 map.put("linda", "Vanessa");
		 map.containsKey("linda");
		 
		 System.out.println("Existe pessoa linda ele é "+ map.get("bonita"));

	  }  
	} 

testa ai qualquer coisa posta denvo que te ajudo!!!
abraço!!

Essa soluçao de hashMap parece ficar bem elegante, só não entendi como seria trabalhar com multiplas qualificações.
Outro detalhe é que eu não quero achar uma pessoa com as qualificações desejadas, e sim quero descobrir se a pessoa escolhida tem as devidas qualificações solicitadas.
Essa diferença existe pois na verdade o fluxo passa por outros filtros antes.
Eu acabei fazendo com if mesmo, vou mostrar como ficou e se tiverem alguma sugestão de melhorar fico agradecido

Fluxo:

O cliente pede um taxi na casa dele
O sistema compara a localização de cada taxi com o endereço do cliente e gera um array ordenado pela distancia
o sistema pega o taxi mais proximo do cliente e verifica se ele tem as qualificações desejadas, se tiver avisa o taxista, se não tiver, pega o próximo taxi mais perto.

Segue aqui a classe que fiz que verifica a qualificação,
As qualificações que o cliente solicitou ficam em Corrida
ainda não botei ela pra rodar mas deve estar certa…

package br.com.sistaxi.auxiliar;

import br.com.sistaxi.beans.Corrida;
import br.com.sistaxi.beans.Taxi;

public class Qualificador {

	public boolean verifica(Corrida corrida, Taxi taxi) {
		// verifica se procura por animal
		if (corrida.getQualificacao().isAnimal()) {
			if (!taxi.getQualificacao().isAnimal()) {
				return false;
			}
		}// fim da procura

		// verifica se procura por ar
		if (corrida.getQualificacao().isAr()) {
			if (!taxi.getQualificacao().isAr()) {
				return false;
			}
		}// fim da procura

		// verifica se procura por cartao
		if (corrida.getQualificacao().isCartao()) {
			if (!taxi.getQualificacao().isCartao()) {
				return false;
			}
		}// fim da procura

		// verifica se procura por luxo
		if (corrida.getQualificacao().isLuxo()) {
			if (!taxi.getQualificacao().isLuxo()) {
				return false;
			}
		}// fim da procura

		// verifica se procura por mala
		if (corrida.getQualificacao().isMala()) {
			if (!taxi.getQualificacao().isMala()) {
				return false;
			}
		}// fim da procura

		// verifica se procura por viagem
		if (corrida.getQualificacao().isViagem()) {
			if (!taxi.getQualificacao().isViagem()) {
				return false;
			}
		}// fim da procura

		return true;
	}

}

amigo isso foi apenas um exemplo onde vc poderia procurar atraz de uma chave o valor, vendo rapidamente sua classe, (“Estou no trab nao pude analizar direito sorry”) o que vc quer pode ser usado dessa mesma forma que te passei a unica diferença que o valor vai ser uma lista de lugares…

ex:

vc teria na chave o lugar onde os taxis estao ex: Rio de janeiro, e no valor os taxis disponiveis no rio de janeiro…

espero ter ajudado como disse ve rapidamente vou ver se faço um exemplo mais detalhado em casa…

abraço!!