Problema com lambda

Pessoal, estou tendo um problema com essa expressão:

@GetMapping
public ResponseEntity<List> findAll(){
List setores = setServ.findAll();
List colaboradores = colServ.findAll();
List list = new ArrayList() ;

		setores.forEach(n->{
			List<Colaborador> colaboradoresFiltrado = new ArrayList<Colaborador>() ;
			System.out.println(n.getId());
			colaboradores.forEach(m->{
				System.out.println(n.getId());

				System.out.println(m.getIdSetor());
				if(n.getId() == m.getIdSetor()){
					colaboradoresFiltrado.add(m);
					System.out.println(colaboradoresFiltrado);

				}
				
			});
			list.add(new ColaboradorSetor(n,colaboradoresFiltrado));
		});
		return ResponseEntity.ok().body(list) ;

}

O if não está funcionando nesse meio e não está adicionando o valor a variável colaboradoresFiltrado. Vocês saberriam como me ajudar?

Qual o problema?

Foi mal, editei agora.
O if não está funcionando dentro do forEach e não está adicionando o colaborador dentro do colaboradoresFiltrado.

Esses ids são de que tipo? Objeto ou primitivo?

Eles seriam primitivos.

Se são primitivos, a comparação está correta.
Se são objetos wrapper, seria mais aconselhável utilizar o método equals.

1 curtida

É, eu precisava usar o método equals, por que são duas strings. Valeu cara, me ajudou bastante, consegui aqui! hehehe

Por isso a pergunta anterior foi

E você me respondeu

De qualquer maneira, lembre-se:
Quando comparar objetos, procure sempre utilizar equals, salvo em casos onde você não quer comparar o valor, mas, a referência dos mesmos.