Percorrer duas Listas

Bom eu criei um DAO para pegar todos os dados da minha tabela peças no banco de dados
lá eu tenho os ids / nomes / estoque

public List<Pecas> pegarPecas() {
    List<Pecas> pecaslist = new ArrayList<>();
    String sql = "SELECT * FROM  pecas";
    try {
        PreparedStatement stmt = con.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {       
            Pecas pecas = new Pecas();
            pecas.setIdpecas(rs.getInt("id_pecas"));
            pecas.setNome(rs.getString("nome"));
            pecas.setQtd_Pecas(rs.getInt("qtdPecas"));
            pecaslist.add(pecas);
        }
        stmt.close();
        rs.close();
    } catch (SQLException ex) {
        Logger.getLogger(RequisicaoDAO.class.getName()).log(Level.SEVERE, null, ex);
        return null;
    }

    return pecaslist;
}

agora eu queria fazer uma verificação com uma outra lista
nessa lista eu adiciono o id qunado o usuario seleciona um checkbox:

    List<Pecas> pecasList = new ArrayList<>();
    {
        if (checkMonitor.isSelected()) {
            Pecas p = new Pecas();
            p.setIdpecas(1);
            pecasList.add(p);
        }
        if (checkTeclado.isSelected()) {
            Pecas p = new Pecas();
            p.setIdpecas(2);
            pecasList.add(p);
        }
        if (checkMouse.isSelected()) {
            Pecas p = new Pecas();
            p.setIdpecas(3);
            pecasList.add(p);
        }
        if (checkVGA.isSelected()) {
            Pecas p = new Pecas();
            p.setIdpecas(4);
            pecasList.add(p);
        }
        if (checkPlacaMae.isSelected()) {
            Pecas p = new Pecas();
            p.setIdpecas(5);
            pecasList.add(p);
        }
        if (checkHD.isSelected()) {
            Pecas p = new Pecas();
            p.setIdpecas(6);
            pecasList.add(p);
        }
        if (checkFonte.isSelected()) {
            Pecas p = new Pecas();
            p.setIdpecas(7);
            pecasList.add(p);
        }
        if (checkRam.isSelected()) {
            Pecas p = new Pecas();
            p.setIdpecas(8);
            pecasList.add(p);
        }
        if (checkCabos.isSelected()) {
            Pecas p = new Pecas();
            p.setIdpecas(9);
            pecasList.add(p);
        }
        if (checkGravador.isSelected()) {
            Pecas p = new Pecas();
            p.setIdpecas(10);
            pecasList.add(p);
        }
        if (checkBateria.isSelected()) {
            Pecas p = new Pecas();
            p.setIdpecas(11);
            pecasList.add(p);
        }
    }

eu queria percorrer essas duas listas
para fazer uma verificação

pegar o id do checkbox selecionado
comparar com o id da lista do banco de dados e pegar a quantidade de estoque

        PecasDAO pecasDAO = new PecasDAO();

        for (Pecas pecasVerificacao : pecasList) {
            for (Pecas pecasBanco : pecasDAO.pegarPecas()) {
            
            }
        }

mas tou c mt dúvida ao fazer isso.

        for (Pecas pecasVerificacao : pecasList) {
            for (Pecas pecasBanco : pecasDAO.pegarPecas()) {
            if(pecasBanco.getIdpecas() == pecasVerificacao.getIdpecas()){
                pecasVerificacao.setQtd_Pecas(pecasBanco.getQtd_Pecas());
            }
        }

não sei se está da melhor forma se alguém poder me tirar essa dúvida
e também não sei o que passar
de parametro para meu metodo:

eu teria que percorrer essas duas listas e adicionar tudo em uma outra lista?

if(requisicaoDAO.inserir(servicosList, selecionada, motivo, pecasList))

Geralmente, você nao seleciona tudo que está no banco para depois comparar com as opçoes que o usuário selecionou. Vou passar um pseudo código aqui de uma sugestao como seu método seria organizado:

//primeiro passo, quando criar seus checkbox (to aqui assumindo que é JCheckBox), você coloca o id em cada componente:
JCheckBox checkMonitor = new JCheckBox();
checkMonitor.putClientProperty("id", 1);
JCheckBox checkTeclado = new JCheckBox();
checkMonitor.putClientProperty("id", 2);
//outros

// segundo passo: ver o que foi selecionado

List<Integer> idsSelecionados = Stream.of(checkMonitor, checkTeclado /*, outros */ )
    .stream().map(check -> (int) check.getClientProperty("id") )
    .collect(Collectors.toList()) 

// terceiro, seu método no dao recebe a lista de ids selecionados e só vai buscar no banco o que for necessário:

public List<Pecas> pegarPecas(List<Integer> ids) {
  // usa a lista de ids pra criar um where no select
}

Acho que é mais ou menos disso que você precisa.

eu tenho uns 8 checkbox’s
eu usei a primeira lista para setar os valores dos ids quando o usario seleciona

com essa lista
se eu selecionar 3 peças irá ter o id’s das 3 peças?

Acho que nao entendi sua dúvida exatamente.

Mas sim, no meu exemplo a variável idsdeveria ter todos valores selecionados ( com a correçao que adiciono abaixo, esqueci no primeiro exemplo):

List<Integer> idsSelecionados = Stream.of(checkMonitor, checkTeclado /*, outros */ ).stream()
    .filter(check -> check.isSelected())
    .map(check -> (int) check.getClientProperty("id") )
    .collect(Collectors.toList()) 

tipo a dúvida era
como eu tenho 8 checkbox
o primeiro tem o id 1 o segundo id 2 o terceiro id 3 e assim vai

se eu seleciono apenas 2

essa lista ira retornar null em todos os outros?

Entao, com a correçao que coloquei depois, você primeiro filtra quem tá selecionado e depois pega o id deles…a lista teria apenas os valores selecionados.

ah sim mano entendi,
eu tou com error no
.stream()
não está encontrando esse metodo
stream
eu estou usando o java fx

Mas que versao de java tá usando? Java 6,7,8, 11, 12?

Posta essa parte inteira também, nao apenas o screen shot.

Ah, peraí…meu erro, desculpa (bem, eu avisei que era pseudo código).

Como você tá fazendo Stream.of, nao precisa usar o .stream()… força do hábito.

tou usando o 1.8
e também não está achando o metodo: putClientProperty

Para o stream eu já tinha respondido na resposta cima.

Qual é o tipo dos objetos checkComponente ?

opa man não tinha visto foi mal
@FXML
private CheckBox checkGravador;
todos são checkbox .

Entao, o putClientProperty existia no JCheckBox do swing, você precisa achar uma propriedade equivalente para o Java fx.

procurei a única q eu achei foi essa porém deu esse error

Eu consegui pegar os dados que eu queria com esse codigo:

    List<Pecas> pecasList2 = new ArrayList<>();{
    for (Pecas pecasVerificacao : pecasList) {
                pecasVerificacao.getIdpecas();
            for (Pecas pecasBanco : pecasDAO.pegarPecas()) {
            if(pecasBanco.getIdpecas() == pecasVerificacao.getIdpecas()){
                pecasVerificacao.setQtd_Pecas(pecasBanco.getQtd_Pecas());
                pecasVerificacao.getIdpecas();
                pecasList2.add(pecasVerificacao);
            }
    }
    } 
    }

eu guardo o id e quantidade de cada checkbox selecionado em uma lista
agr só tou com dificuldade como eu faria para fazer um if
se determinada peça da lista tiver quantidade > 0 chamar um metdoo
se não aparecer um alert

    if(selecionada!= null){
        requisicaoDAO.verificarStatus(selecionada);
    
        if(selecionada.getReqStatus().getIdstatus() == 1){
            if(requisicaoDAO.inserir(servicosList, selecionada, motivo, pecasList)){
            atualizarTabela();
            alerts.alertReqCadastrado();
            } 
            else{
            alerts.alertReqNCadastrado();
            }
        }
        else{
            alerts.reqFechada();
        }
    
    }else{
        alerts.selecionarRequisicao();
    }

até o momento minha estrutura de if está assim .