Problema com vetores e If

Estou com um problema estranho. Coloco três valores dentro de um vetor, e verifico se eles são menores do que um certo valor. Nem todos são menores, apesar de usar a condição &&, eu ainda assim entro no If.
Segue a parte do código onde tenho esse problema. Ele faz parte de um código muito mais complexo.

List<Double> valoresFinal = new ArrayList<Double>();
adiciono os valores em umvetor

if((valoresFinal.get(0)<15000) && (valoresFinal.get(1)<15000)  && (valoresFinal.get(2)<15000))
{

                portaAtual.setStatusPorta(false);
                portaDAO.atualizar(portaAtual);
                System.out.println("Status:: false");
                System.out.println("SIM NESSE IF");
                System.out.println("Valor1"+valoresFinal.get(0));
                System.out.println("Valor2"+valoresFinal.get(1));
                System.out.println("Valor3"+valoresFinal.get(2));
                if(portaAtual.isStatusPorta() != portaAtual.isStatusPortaRequerido())
                {
                    statusCorreto(portaAtual);
                }
            }
           }

Esse trecho de código me retorna isso:

Atualizando…

Status:: false

SIM NESSE IF
Valor18496.0
Valor24223.999999999999
Valor313256.0

Como podem ver os valores são maiores que 15000 mas ainda assim estou entrando no if.

Alguém tem alguma ideia do porque?

Seus ifs estão funcionando de acordo. Nenhum dos valores é maior que 15000. O problema parece ser a confusão causada pelas strings que você usou no System.out.println. Veja que os valores lidos são:

8496.0
4223.999999999999
13256.0

Todos menores que 15000.

O 1, 2 e 3 na frente desses vem da String que você está exibindo (Valor1, Valor2 e Valor3).

Para ficar mais claro, mude seu programa para algo assim:

System.out.println("Status:: false");
System.out.println("SIM NESSE IF");
System.out.println("Primeiro Valor: "+valoresFinal.get(0));
System.out.println("Segundo Valor: "+valoresFinal.get(1));
System.out.println("Terceiro Valor: "+valoresFinal.get(2));

Veja um exemplo: https://ideone.com/poXEFm

Abraço

Obrigado! o sistema é tão grande que fiquei cego para isso.

Complementando a resposta do TerraSkilll, fiz um algoritmo aqui :

               final Double valor = 1500.0;

		List<Double> valoresFinal = new ArrayList<Double>();

		valoresFinal.addAll(Arrays.asList(2000.0, 3000.0, 4000.0));

		for (Double v : valoresFinal) {
			if (v < valor) {
				System.out.println("SIM NESSE IF");
				System.out.println("Status:: false");
				for (Double d : valoresFinal) {
					System.out.println("Valor : " + d);
				}
			}
		}