Comparar 6 últimos valores recebidos de dispositivo

Pessoal tenho um loop que le um disposito e carrega a string de leitura e manda para um variável, e fica lendo até eu finalizar a aplicação, até aí tudo certo.
Agora preciso ir comparando os valores conforme são recebidos e se os 6 últimos forem iguas preciso startar um outro processo.
Alguém pode me ajudar quanto a uma forma inteligente de se fazer isso? Pensei eu usar if() ou while() mas vai ficar muito POG.

Crie uma classe que tem 3 métodos:

  • configurarNumeroValoresRepetidos
    Este método serve para você dizer quantos valores devem estar repetidos (e além disso serve para limitar a quantidade de valores recebidos que devem ser lembrados). No seu caso você vai passar o valor 6.
  • adicionarValorRecebido
    Este método serve para você adicionar o último valor recebido a uma lista dos últimos valores recebidos. Para a lista não ficar muito grande, se passar do máximo (que, por exemplo, foram 6), você remove o valor antigo se for o caso.
  • checarUltimosValoresRepetidos
    Este método é que faz a comparação dos últimos X valores recebidos.
    É claro que tem “ifs” e “whiles”, mas você os isolou em um lugar onde não possam ser muito perigosos para sua saúde mental :stuck_out_tongue:

Valeu pela dica, vai ter que ser assim mesmo e com extremo cuidado com o ataque psicologico de uma cadeia de if()´s. :lol:

Você não precisa de uma cadeia de ifs; só um for e um if, e um flag. Algo parecido com:

boolean ret = true;

for (int i = 1; i &lt 6; ++i) {
    if (!valoresRecebidos.get(0).equals (valoresRecebidos.get(i))  {
        ret = false;
        break;
    }
}

return ret;

Hehe, eu sei, só tava brincando.
Valeu.