si io ho dato per scontato che le operazioni fossero valide e che ci fossero problemi a capire perché fai la doppia iterazione

sulle Collection io faccio un controllo diverso

codice:
boolean ret = true; 
List A ;
List B; 

if (A.size() == B.size()){
//con buona probabilità sono uguali
 for (Object a1 : A){
    if (!b.contains(a1) ){
        ret = false; 
        break;  
   }
 }
}else {
  ret = false; 
}
return ret;