Dúvida com retorno do Tipo String e boolean - PROBLEMA BINARIO

Fala galera, a bronca é esta:

tenho um programa em java eu programei para retornar uma coluna especifica.
Como faço agora para que eu leia linha por linha somente desta coluna e na coluna checar se o conteudo (String) da coluna constitui um problema binário (apenas 2 valores distintos).

Exemplo

tenho um arquivo .txt com os seguintes campos que serve para o meu programa ler como entrada:

PASSO1:

arquivo.txt
±-------------------------------------+
|TITULO1 TITULO2 TITULO3 |
|xxxxxxx aaaaaaa sim |
|yyyyyyy bbbbbbb nao |
|zzzzzzzz cccccccc nao |
|nnnnnnn ddddddd sim |
±-------------------------------------+

PASSO2:

eu indico para meu programa ler a coluna 3 (TITULO3) e me retorna isto no console de saida:

saida coluna:

TITULO3
sim
nao
nao
sim

PASSO3:

agora como faço para que o programa compare o conteudo (String) da coluna e me diga se o que tem é binario ou nao:

exemplo:

TITULO3
ligado // quero que saia 1 ou true
desligado // quero que saia 0 ou false
ligado // quero que saia 1 ou true
ligado // quero que saia 1 ou true
desligado // quero que saia 0 ou false

ou

TITULO3
on // quero que saia 1 ou true
off // quero que saia 0 ou false
off // quero que saia 0 ou false
on // quero que saia 1 ou true
off // quero que saia 0 ou false

Desde já agradeço a todos.
[]´s.

Você le o valor joga em um método que compare ele com o que você quer ( on/off, ligado/delisgado) e faz esse método retornar um valor diferente dependendo da condição que for verdadeira.

Exemplo:

public boolean retornaCondicaoBooleana(String parametoTxt){
  if(parametroTxt.equal("on"){
           return true;
  }else{
           return false;
   }
}

Se não der certo posta seu código para nós analisarmos.

[quote=Jose111]Você le o valor joga em um método que compare ele com o que você quer ( on/off, ligado/delisgado) e faz esse método retornar um valor diferente dependendo da condição que for verdadeira.

Exemplo:

public boolean retornaCondicaoBooleana(String parametoTxt){
  if(parametroTxt.equal("on"){
           return true;
  }else{
           return false;
   }
}

Se não der certo posta seu código para nós analisarmos.[/quote]

vamos melhorar um pouco o codigo não é?

public boolean retornaCondicaoBooleana(String parametoTxt){
 r eturn parametroTxt.equals("on");
}

não precisa de todas essas linhas ai não.
Agora basta substituir o on por um valor valido, ou usar um Map<String, Boolean>, e definir para cada String um valor booleano.

Percorrendo esse map vc tem todos as opções.

[]'s

E se por a caso, eu nao não puder especificar o valor contido nesta coluna, pois poderei ler um outro arquivo que nao tem sim ou nao (exemplo: ligado e desligado), daí qual comparativo farei se no codigo tem: return parametroTxt.equals(“on”);

ou

parametroTxt.equal(“on”)

Daí vai dar pau num eh.

Queria que o programa compreendesse automaticamente ao ler o arquivo se a coluna tem algum problema do tipo binario.

[]´s.

Por isso que falie pra vc usar um Map

public class Dicionario{
Map&lt;String, Boolean&gt; dicionario = new HashMap&lt;String, Boolean&gt;();
   public void addPalavra(String texto, Boolean valor){
     dicionario.put(texto, valor);
  }
  public Boolean getBoolean(String texto){
     return dicionario.get(texto);
  }
}

Lembrando que seria bacana vc ler o dicinário de um arquivo txt, ou registar todos os valores no map antes de começar, assim o arquivo pode mudar a vontade, e o programa está suportando essas alterações.

[]'s

Outra lapada amigo. e se eu nao puder usar um Map, por questoes de desempenho. as vezes eu tenho um arquivo de sei lá, 4GB de dados, daí a maquina vai pro brejo.

Existe muita variação nessas strings ou é somente duas, ligado e desligado?

Geralmente é sim/nao ou ligado/desligado.

Mas pode haver variação sim.

Cara, quando tenho campo que o valor é boolean sempre defino como numerico no banco (Oracle) e que recebe os valores 0 ou 1. Se você usar a JPA/Hibernate ele já reconhece se o campo é true ou false só com o valor que vem do seu campo. Esse negócio de tratar como string não acho uma boa pratica de programação.

[quote=Diego Marinho]Geralmente é sim/nao ou ligado/desligado.

Mas pode haver variação sim.[/quote]

Ai que tá, as vezes é melhor perder um pouco de performance, e usar um Map.

Outra solução seria quardar em um List todos os valores de true, o restante vira false.

[]'s

Entao como seria se fosse SEM variação ou simplesmente sim/nao - desligado/ligado. sabendo que nao pode haver uso de memoria.

O melhor é usar o equals la em cima e comparar com um string pré definida.
Não sei qual o problema em armazenas os valores em memoria, vc não precisa armazenar todos, até por que um Map por exemplo não deixaria duplicar, vc so armazena o que precisa, se for 4GB de arquivo e tiver 4 on, 2 off, 3 ligado, vão ficar 9 registros em memoria, comparando o consumo de Strings e Booleans, nem vai ter diferença

[]'s

seria melhor eu usar uma colletion do tipo:

Set result = new HashSet();
.
.
.
.
e compara linha por linha e desmembrar o objeto po split.

Cara vou tentar melhorar o raciocinio!!!

Eu quero que o programa leia sem usar nada que perca a performance, tipo comparar se o que eu tenho na coluna for assim:

COLUNA
on
off
off
off
on
on
off
on
besteira (o programa deve impedir isso e sair e gerar log de erro)
on
off
.
.
.

ele deve verificar se o que tem na coluna deve ser [on ou off] e o que tiver de extra ele deve mostrar uma exceção e sair e gerar o log em um arquivo log.txt

OBS: O programa deve ler arquivos que nao tenha somente [on ou off], haverá casos de pegar arquivos que contem [ligado e desligado por exemplo].
ele deve compara se é biinario ou nao dependendo do que vir, e o que nao for binario ele sai e mostra exceção e gera log.