Compara 2 Array List de Objetos diferentes em Java

Me da uma ajuda ai galera!

Estou com uma dificuldade,

fiz duas consultas no banco de dados a primeira contem uma lista de 1 funcionários e a segunda uma lista de usuários.

gostaria de saber como verifico se o funcionário já contem na lista de Usuários.

estou usando JPA para conexão ao BD.

#desde já agradeço a ajuda.:slight_smile:

#consulta do funcionário

    //capitura o valor selecionado na JComboBox
    String nome_funcionario = String.valueOf(jComboBox1.getSelectedItem());
    
    
    funcionarioQuery = entityManager.createQuery("SELECT f.nome FROM Funcionario f WHERE f.nome =:nome");
    funcionarioQuery.setParameter("nome", nome_funcionario);
    
    
    funcionarioList1.clear();
    funcionarioList1.addAll(funcionarioQuery.getResultList());  

#consulta dos usuários cadastrados

 query1 = entityManager.createQuery( "SELECT u.funcionario FROM Usuario u");
        
        list1.clear();
        list1.addAll(query1.getResultList());

Olá,
blz, vc quer comparar duas listas com objetos de tipos diferentes, uma tem Funcionario e outra tem Usuario, certo?
Já pensou em como vc vai comparar um Funcionario com um Usuario? Que critérios vc vai usar para dizer que são diferentes ou iguais?
Resolvido isso, é só percorrer as listas fazendo tal comparação entre estes objetos.

e isso que não to conseguindo fazer :weary:

tem como você me da uma ajuda ?

No aguardo desta resposta…

deixa eu ver se entendi

eu tenho uma list que retorna pra mim o nome de um funcionário.

e tenho a list de usuários que retorna uma list com os funcionários que já tem um usuário cadastrado.

o que acontece e que na list de funcionário eu só tenho um registro por ex: lucas

e na list de usuários eu tenho uma list com o nome dos funcionários com conta de usurários cadastrados ex: lucas, vítor , alam

quero percorrer a list de usuários e verificar se tem o registro da list de funcionários.

vei desculpa o incomodo ai e que nunca trabalhei com isso.

e o que pesquisei ficou confuso .

Na teoria geral então você quer ver quais os funcionários não tem usuário cadastrado?

olha meu código

public void salvar(){

   //capitura o valor selecionado na JComboBox que contem uma list de funcionarios
    String nome_funcionario = String.valueOf(jComboBox1.getSelectedItem());
    
    
    //Faz a consulta dos funcionarios cadrastados no Banco de Dados que tenham o mesmo nome selecionado a JComboBox
    funcionarioQuery = entityManager.createQuery("SELECT f.nome FROM Funcionario f WHERE f.nome =:nome");
    funcionarioQuery.setParameter("nome", nome_funcionario);
    
    //Armazena o resultado da consulta em uma lista
    funcionarioList1.clear();
    funcionarioList1.addAll(funcionarioQuery.getResultList());
    
    
    
    //Coverte List p/ String e retira os cochetes
    String listFuncionario = funcionarioList1.toString();
    String teste = listFuncionario.substring(1, listFuncionario.length() - 1);
    
    
    
    
   
    //Faz a consulta dos usuarios cadrastados no Banco de Dados e retorna o nome do funcionario
    query1 = entityManager.createQuery( "SELECT u.funcionario FROM Usuario u");
    
    //Armazena o resultado da consulta em uma lista
    list1.clear();
    list1.addAll(query1.getResultList());
    
    
    
    
    
    //compara se a lista de funcionario contem algum registro igual na lista de usuarios
    if (list1.contains(funcionarioList1)) {
        
        
        JOptionPane.showInternalMessageDialog(null, "Funcionario já tem conta de usuario cadrastada no sistema");
       
   }

}

Meu codigo que ver se minhas list de funcionário contem na list de usuario

//compara se a lista de funcionário contem algum registro igual na lista de usuários
        if (list1.contains(funcionarioList1)) {


            JOptionPane.showInternalMessageDialog(null, "Funcionario já tem conta de usuario cadrastada no sistema");

       }

so que não retorna nada mesmo passando um valor que existe na list de usuários

ok, ok, mas na teoria, pra q vc quer isso?
quer ver quais os funcionários não tem usuário cadastrado???

sim

isso mesmo

Então por que simplesmente não faz uma busca no banco que lhe traga só estes registros? Pra quê faze essas maracutaias no sistema se é melhor e mais fácil via consulta sql?
Ex:
select * from funcionarios where id not in (select from usuarios)

deu certo meu código ficou assim

public void teste(){
//Armazena Valor selecinado no JComboBox em uma String
String nome_funcionario = String.valueOf(jComboBox1.getSelectedItem());

           List f = entityManager.createNativeQuery("select f.nome from usuario u inner join funcionario f on u.id_funcionario = f.id where f.nome ='"+ nome_funcionario +"'").getResultList();
           
            System.out.println(f);
            
             if (f.size() == 1) {
        
                 JOptionPane.showMessageDialog(null,"Usuario já cadrastado", "ERRO", JOptionPane.ERROR_MESSAGE);    
       
    } else {// Salva registro no Banco de Dados
                 
                   try {
        entityManager.getTransaction().commit();
        entityManager.getTransaction().begin();
    } catch (RollbackException rex) {
        rex.printStackTrace();
        entityManager.getTransaction().begin();
        List<Model.Usuario> merged = new ArrayList<Model.Usuario>(list.size());
        for (Model.Usuario p : list) {
            merged.add(entityManager.merge(p));
        }
        list.clear();
        list.addAll(merged);
    }

    entityManager.getTransaction().rollback();
    entityManager.getTransaction().begin();
    java.util.Collection data = query.getResultList();
    for (Object entity : data) {
        entityManager.refresh(entity);
    }
    list.clear();
    list.addAll(data);
        
        
    }
            
      
      
      }

Valew meu amigo muito abrigado