Guarda io farei così...:
codice:
public class countArrayList<T> {
public static void main(String[] args) {
//test interi
countArrayList<Integer> listanumerica = new countArrayList<Integer>();
List numeri = new ArrayList<Integer>();
numeri.add(2);
numeri.add(3);
numeri.add(3);
Map mp = listanumerica.individualsCounter( numeri );
if(listanumerica.printResult(mp)){
System.out.println("Nessun duplicato nell'array");
}
else{
System.out.println("Attenzione, trovati duplicati nell'array!");
}
//test stringhe
countArrayList<String> listaalfanumerica = new countArrayList<String>();
List stringhe = new ArrayList<String>();
//hihihi ciao Fra! (^-^)
stringhe.add("Francesco");
stringhe.add("Muia");
stringhe.add("Muia");
stringhe.add("Muia");
Map mp2 = listaalfanumerica.individualsCounter( stringhe );
if(listaalfanumerica.printResult(mp2)){
System.out.println("Nessun duplicato nell'array");
}
else{
System.out.println("Attenzione, trovati duplicati nell'array!");
}
System.out.println("Analisi duplicati terminata!");
}
private boolean printResult(Map mp ){
Iterator it = mp.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry)it.next();
System.out.println(pair.getKey() + " = " + pair.getValue());
if(pair.getValue() instanceof Integer ){
int i = (Integer) pair.getValue();
if(i>1){
return false;
}
}
}
return true;
}
private Map individualsCounter(Collection<T> r){
Map<T, Integer>wordCount = new HashMap<T, Integer>();
for( T seq : r){
wordCount.put(seq, wordCount.get(seq)==null?1:wordCount.get(seq)+1);
}
return wordCount;
}
}