package jcf_set.exercise; import java.util.ArrayList; import java.util.HashSet; import java.util.TreeSet; import java.util.Iterator; import java.util.LinkedList; import java.util.List; public class IteratoreSenzaDuplicati { public static void main(String[] main) { new IteratoreSenzaDuplicati().run(); } public void run() { List lista = new ArrayList(); lista.add("tree"); lista.add("flower"); lista.add("tree"); lista.add("flower"); lista.add("animal"); lista.add("flower"); lista.add("fruit"); // Stampa collections System.out.println("Lista con duplicati: "); System.out.println(lista); System.out.println(); // Test metodi privati List testList = new LinkedList(); Iterator itNoDup = getIteratorNoDuplicates(lista.iterator()); while (itNoDup.hasNext()) testList.add(itNoDup.next()); System.out.println("Lista senza duplicati: "); System.out.println(testList); System.out.println(); testList = new LinkedList(); System.gc(); Iterator itNoDupOrd = getIteratorNoDuplicatesOrdinated(lista.iterator()); while (itNoDupOrd.hasNext()) testList.add(itNoDupOrd.next()); System.out.println("Lista senza duplicati ordinata: "); System.out.println(testList); } // Esercizio 1 /* * Passare una lista con duplicati. * Ottenere un iteratore privo di duplicati. */ private static > Iterator getIteratorNoDuplicates(Iterator it) { HashSet tmp = new HashSet(); while (it.hasNext()) tmp.add(it.next()); return tmp.iterator(); } // Esercizio 2 /* * Passare come parametro una lista con duplicati. * Ottenere un iteratore senza duplicati e ordinato. */ private static > Iterator getIteratorNoDuplicatesOrdinated(Iterator it) { TreeSet tmp = new TreeSet(); while (it.hasNext()) tmp.add(it.next()); return tmp.iterator(); } }