E' un po' tirata via, ma dovrebbe funzionare anche cosi':
import java.util.ArrayList;

public class Prova {

public static void main(String[] args) {

ArrayList primo = new ArrayList();
ArrayList secondo = new ArrayList();

primo.add("1");
primo.add("2");
primo.add("3");
primo.add("4");
primo.add("5");
primo.add("6");
secondo.add("6");
secondo.add("5");
secondo.add("4");
secondo.add("3");
secondo.add("2");
secondo.add("1");

System.out.println(contaOccorrenze(primo, secondo));

primo = new ArrayList();
secondo = new ArrayList();

primo.add("1");
primo.add("2");
primo.add("3");
primo.add("4");
primo.add("5");
primo.add("6");
secondo.add("6");

System.out.println(contaOccorrenze(primo, secondo));

}

private static boolean contaOccorrenze(ArrayList primo, ArrayList secondo) {
ArrayList compare = new ArrayList();

for(int i=0; i<primo.size(); i++) {
if(secondo.contains(primo.get(i))) {
compare.add(primo.get(i));
}
}

if(primo.size() == compare.size())
return true;
else
return false;
}

}


La prima volta contaOccorrenze ti torna true, mentre la seconda false....
Puo' essere ottmizzata contando direttamente le occorrenze, ma anche cosi' dovrebbe andare.

Che ne pensi?