Aggiunta di parziale

This commit is contained in:
Emanuele Slusarz
2026-05-10 03:03:50 +02:00
parent 56d6c1e9d6
commit 29ef5b6655
289 changed files with 11823 additions and 1733 deletions
@@ -0,0 +1,74 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
Set<Integer> bHashSet = new HashSet<Integer>(Arrays.asList(bArray));
// Stampa delle due collezioni
System.out.println("Stampa della collezone a: ");
System.out.println(aHashSet);
System.out.println("Stampa della collezione b: ");
System.out.println(bHashSet);
// Unione
System.out.println();
}
// Operazioni di insiemistica
/*
* Per eseguire una unione, è conveniente
* adoperare la Set poichè l'implementazione
* TreeSet permette di non mantenere duplicati.
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
Set<T> union = new HashSet<T>();
union.addAll(s1);
union.addAll(s2);
return union;
}
/*
* Per eseguire una intersezione, è conveniente
* adoperare la Set allo stesso modo
*/
public static <T extends Comparable<? super T>> Set<T> intersection(Set<T> s1, Set<T> s2) {
Set<T> intersection = new HashSet<T>();
intersection.addAll(s1);
intersection.retainAll(s2);
return intersection;
}
/*
* Per eseguire la differenza, si usa
* la Set
*/
public static <T extends Comparable<? super T>> Set<T> difference(Set<T> s1, Set<T> s2) {
Set<T> difference = new HashSet<T>();
difference.addAll(s1);
difference.removeAll(s2);
return difference;
}
public static Set<Integer> abs(Set<Integer> s) {
Set<Integer> abs = new HashSet<Integer>();
Iterator<Integer> it = s.iterator();
while (it.hasNext()) abs.add(Math.abs(it.next()));
return abs;
}
}
@@ -0,0 +1,38 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
new IteratoreSenzaDuplicati().run();
}
public void run() {
List<String> lista = new ArrayList<String>();
lista.add("tree");
lista.add("flower");
lista.add("tree");
lista.add("flower");
lista.add("animal");
lista.add("flower");
lista.add("fruit");
}
// Esercizio 1
/*
* Ottenere una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T>
}
}
@@ -0,0 +1,24 @@
package jcf_set.exercise;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class EsercizioParole {
/*
* EX1 del 27-01-2026 (I Appello)
* Si scriva un metodo
* public List<String> DifferentWordsList(List<String>)
* che, data in input una lista di stringhe, restituisce una
* nuova lista priva di elementi duplicati, contenente tutte le
* stringhe distinte di list e ordinata per lunghezze decrescenti
* (a parità di lunghezza ordinamento lessicografico crescente)
*/
public List<String> DifferentWordsList(List<String> lista) {
Set<String> listaOrd = new TreeSet<String>(new Comparator() {
});
}
}
@@ -0,0 +1,38 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
new IteratoreSenzaDuplicati().run();
}
public void run() {
List<String> lista = new ArrayList<String>();
lista.add("tree");
lista.add("flower");
lista.add("tree");
lista.add("flower");
lista.add("animal");
lista.add("flower");
lista.add("fruit");
}
// Esercizio 1
/*
* Ottenere una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T
}
}
@@ -0,0 +1,65 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
Set<Integer> bHashSet = new HashSet<Integer>(Arrays.asList(bArray));
}
// Operazioni di insiemistica
/*
* Per eseguire una unione, è conveniente
* adoperare la Set poichè l'implementazione
* TreeSet permette di non mantenere duplicati.
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
Set<T> union = new HashSet<T>();
union.addAll(s1);
union.addAll(s2);
return union;
}
/*
* Per eseguire una intersezione, è conveniente
* adoperare la Set allo stesso modo
*/
public static <T extends Comparable<? super T>> Set<T> intersection(Set<T> s1, Set<T> s2) {
Set<T> intersection = new HashSet<T>();
intersection.addAll(s1);
intersection.retainAll(s2);
return intersection;
}
/*
* Per eseguire la differenza, si usa
* la Set
*/
public static <T extends Comparable<? super T>> Set<T> difference(Set<T> s1, Set<T> s2) {
Set<T> difference = new HashSet<T>();
difference.addAll(s1);
difference.removeAll(s2);
return difference;
}
public static Set<Integer> abs(Set<Integer> s) {
Set<Integer> abs = HashSet<Integer>();
Iterator<Integer> it = s.iterator();
while (it.hasNext()) abs.add(Math.abs(it.next()));
}
}
@@ -0,0 +1,26 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
Set<Integer> bHashSet = new HashSet<Integer>(Arrays.asList(bArray));
}
// Operazioni di insiemistica
}
@@ -0,0 +1,12 @@
package jcf_set.exercise;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
}
}
@@ -0,0 +1,86 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
Set<Integer> bHashSet = new HashSet<Integer>(Arrays.asList(bArray));
// Stampa delle due collezioni
System.out.println("Stampa della collezone a: ");
System.out.println(aHashSet);
System.out.println("Stampa della collezione b: ");
System.out.println(bHashSet);
// Unione
System.out.println("Stampa della unione: ");
System.out.println(union(aHashSet, bHashSet));
// Intersezione
System.out.println("Stampa della intersezione: ");
System.out.println(intersection(aHashSet, bHashSet));
// Difference
System.out.println("Stampa della differenza: ");
System.out.println(difference(aHashSet, bHashSet));
// Abs
System.out.println();
}
// Operazioni di insiemistica
/*
* Per eseguire una unione, è conveniente
* adoperare la Set poichè l'implementazione
* TreeSet permette di non mantenere duplicati.
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
Set<T> union = new HashSet<T>();
union.addAll(s1);
union.addAll(s2);
return union;
}
/*
* Per eseguire una intersezione, è conveniente
* adoperare la Set allo stesso modo
*/
public static <T extends Comparable<? super T>> Set<T> intersection(Set<T> s1, Set<T> s2) {
Set<T> intersection = new HashSet<T>();
intersection.addAll(s1);
intersection.retainAll(s2);
return intersection;
}
/*
* Per eseguire la differenza, si usa
* la Set
*/
public static <T extends Comparable<? super T>> Set<T> difference(Set<T> s1, Set<T> s2) {
Set<T> difference = new HashSet<T>();
difference.addAll(s1);
difference.removeAll(s2);
return difference;
}
public static Set<Integer> abs(Set<Integer> s) {
Set<Integer> abs = new HashSet<Integer>();
Iterator<Integer> it = s.iterator();
while (it.hasNext()) abs.add(Math.abs(it.next()));
return abs;
}
}
@@ -0,0 +1,38 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class EsercizioParole {
/*
* EX1 del 27-01-2026 (I Appello)
* Si scriva un metodo
* public List<String> DifferentWordsList(List<String>)
* che, data in input una lista di stringhe, restituisce una
* nuova lista priva di elementi duplicati, contenente tutte le
* stringhe distinte di list e ordinata per lunghezze decrescenti
* (a parità di lunghezza ordinamento lessicografico crescente)
*/
public List<String> DifferentWordsList(List<String> lista) {
Set<String> listaOrd = new TreeSet<String>(new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s2.compareTo(s1);
}
});
if (lista == null || lista.isEmpty()) return new ArrayList<String>(listaOrd);
Iterator<String> it = lista.iterator();
while (it.hasNext()) {
listaOrd.add(it.next());
}
}
}
@@ -0,0 +1,5 @@
package jcf_set.exercise;
public class Insiemistica {
}
@@ -0,0 +1,35 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.List;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
new IteratoreSenzaDuplicati().run();
}
public void run() {
List<String> lista = new ArrayList<String>();
lista.add("tree");
lista.add("flower");
lista.add("tree");
lista.add("flower");
lista.add("animal");
lista.add("flower");
lista.add("fruit");
}
// Esercizio 1
/*
* Ottenere una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T>
}
@@ -0,0 +1,38 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
new IteratoreSenzaDuplicati().run();
}
public void run() {
List<String> lista = new ArrayList<String>();
lista.add("tree");
lista.add("flower");
lista.add("tree");
lista.add("flower");
lista.add("animal");
lista.add("flower");
lista.add("fruit");
}
// Esercizio 1
/*
* Ottenere una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T> Iterator<T> getIteratorNoDuplicates(List<T> ) {
}
}
@@ -0,0 +1,45 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
Set<Integer> bHashSet = new HashSet<Integer>(Arrays.asList(bArray));
}
// Operazioni di insiemistica
/*
* Per eseguire una unione, è conveniente
* adoperare la Set poichè l'implementazione
* TreeSet permette di non mantenere duplicati.
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
Set<T> union = new HashSet<T>();
union.addAll(s1);
union.addAll(s2);
return union;
}
/*
* Per eseguire una intersezione, è conveniente
* adoperare la Set allo stesso modo
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
Set<T> intersection = new HashSet<T>();
}
}
@@ -0,0 +1,53 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
Set<Integer> bHashSet = new HashSet<Integer>(Arrays.asList(bArray));
}
// Operazioni di insiemistica
/*
* Per eseguire una unione, è conveniente
* adoperare la Set poichè l'implementazione
* TreeSet permette di non mantenere duplicati.
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
Set<T> union = new HashSet<T>();
union.addAll(s1);
union.addAll(s2);
return union;
}
/*
* Per eseguire una intersezione, è conveniente
* adoperare la Set allo stesso modo
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
Set<T> intersection = new HashSet<T>();
intersection.addAll(s1);
intersection.retainAll(s2);
return intersection;
}
/*
* Per eseguire la differenza, si usa
* la Set
*/
}
@@ -0,0 +1,28 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.List;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
new IteratoreSenzaDuplicati().run();
}
public void run() {
List<String> lista = new ArrayList<String>();
lista.add("tree");
lista.add("flower");
lista.add("tree");
lista.add("flower");
lista.add("animal");
lista.add("flower");
lista.add("fruit");
}
}
@@ -0,0 +1,13 @@
package jcf_set.exercise;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
new IteratoreSenzaDuplicati().run();
}
public void run() {
}
}
@@ -0,0 +1,74 @@
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<String> lista = new ArrayList<String>();
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<String> testList = new LinkedList<String>();
Iterator<String> 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<String>();
System.gc();
Iterator<String> itNoDupOrd = getIteratorNoDuplicatesOrdinated(lista.iterator());
while (itNoDupOrd.hasNext()) testList.add(itNoDupOrd.next());
System.out.println();
}
// Esercizio 1
/*
* Passare una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicatesOrdinated(Iterator<T> it) {
TreeSet<T> tmp = new TreeSet<T>();
while (it.hasNext()) tmp.add(it.next());
return tmp.iterator();
}
}
@@ -0,0 +1,20 @@
package jcf_set.exercise;
import java.util.List;
public class EsercizioParole {
/*
* EX1 del 27-01-2026 (I Appello)
* Si scriva un metodo
* public List<String> DifferentWordsList(List<String>)
* che, data in input una lista di stringhe, restituisce una
* nuova lista priva di elementi duplicati, contenente tutte le
* stringhe distinte di list e ordinata per lunghezze decrescenti
* (a parità di lunghezza ordinamento lessicografico crescente)
*/
public List<String> DifferentWordsList(List<String> lista) {
Set<String>
}
}
@@ -0,0 +1,46 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
Set<Integer> bHashSet = new HashSet<Integer>(Arrays.asList(bArray));
}
// Operazioni di insiemistica
/*
* Per eseguire una unione, è conveniente
* adoperare la Set poichè l'implementazione
* TreeSet permette di non mantenere duplicati.
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
Set<T> union = new HashSet<T>();
union.addAll(s1);
union.addAll(s2);
return union;
}
/*
* Per eseguire una intersezione, è conveniente
* adoperare la Set allo stesso modo
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
Set<T> intersection = new HashSet<T>();
intersection.addAll(s1);
intersection.retainAll(s2);
}
}
@@ -0,0 +1,36 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class EsercizioParole {
/*
* EX1 del 27-01-2026 (I Appello)
* Si scriva un metodo
* public List<String> DifferentWordsList(List<String>)
* che, data in input una lista di stringhe, restituisce una
* nuova lista priva di elementi duplicati, contenente tutte le
* stringhe distinte di list e ordinata per lunghezze decrescenti
* (a parità di lunghezza ordinamento lessicografico crescente)
*/
public List<String> DifferentWordsList(List<String> lista) {
Set<String> listaOrd = new TreeSet<String>(new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s2.compareTo(s1);
}
});
if (lista == null || lista.isEmpty()) return new ArrayList<String>(listaOrd);
Iterator<String> it = lista.iterator();
}
}
@@ -0,0 +1,69 @@
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<String> lista = new ArrayList<String>();
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<String> testList = new LinkedList<String>();
Iterator<String> itNoDup = getIteratorNoDuplicates(lista.iterator());
while (itNoDup.hasNext()) testList.add(itNoDup.next());
System.out.println("Lista senza duplicati: ");
System.out.println(testList);
System.out.println();
}
// Esercizio 1
/*
* Passare una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicatesOrdinated(Iterator<T> it) {
TreeSet<T> tmp = new TreeSet<T>();
while (it.hasNext()) tmp.add(it.next());
return tmp.iterator();
}
}
@@ -0,0 +1,44 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class EsercizioParole {
/*
* EX1 del 27-01-2026 (I Appello)
* Si scriva un metodo
* public List<String> DifferentWordsList(List<String>)
* che, data in input una lista di stringhe, restituisce una
* nuova lista priva di elementi duplicati, contenente tutte le
* stringhe distinte di list e ordinata per lunghezze decrescenti
* (a parità di lunghezza ordinamento lessicografico crescente)
*/
public List<String> DifferentWordsList(List<String> lista) {
Set<String> listaOrd = new TreeSet<String>(new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
int l1 = s1.length();
int l2 = s2.length();
int cmp = Integer.compare(l2, l1);
if (cmp != 0) return cmp;
}
});
if (lista == null || lista.isEmpty()) return new ArrayList<String>(listaOrd);
Iterator<String> it = lista.iterator();
while (it.hasNext()) {
listaOrd.add(it.next());
}
return new ArrayList<String>(listaOrd);
}
}
@@ -0,0 +1,40 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class EsercizioParole {
/*
* EX1 del 27-01-2026 (I Appello)
* Si scriva un metodo
* public List<String> DifferentWordsList(List<String>)
* che, data in input una lista di stringhe, restituisce una
* nuova lista priva di elementi duplicati, contenente tutte le
* stringhe distinte di list e ordinata per lunghezze decrescenti
* (a parità di lunghezza ordinamento lessicografico crescente)
*/
public List<String> DifferentWordsList(List<String> lista) {
Set<String> listaOrd = new TreeSet<String>(new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
int l1 = s1.length();
int l2 = s2.length();
}
});
if (lista == null || lista.isEmpty()) return new ArrayList<String>(listaOrd);
Iterator<String> it = lista.iterator();
while (it.hasNext()) {
listaOrd.add(it.next());
}
return new ArrayList<String>(listaOrd);
}
}
@@ -0,0 +1,33 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class EsercizioParole {
/*
* EX1 del 27-01-2026 (I Appello)
* Si scriva un metodo
* public List<String> DifferentWordsList(List<String>)
* che, data in input una lista di stringhe, restituisce una
* nuova lista priva di elementi duplicati, contenente tutte le
* stringhe distinte di list e ordinata per lunghezze decrescenti
* (a parità di lunghezza ordinamento lessicografico crescente)
*/
public List<String> DifferentWordsList(List<String> lista) {
Set<String> listaOrd = new TreeSet<String>(new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s2.compareTo(s1);
}
});
if (lista == null || lista.isEmpty()) return new ArrayList<String>(listaOrd);
}
}
@@ -0,0 +1,84 @@
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<String> lista = new ArrayList<String>();
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<String> testList = new LinkedList<String>();
Iterator<String> 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<String>();
System.gc();
Iterator<String> 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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicatesOrdinated(Iterator<T> it) {
TreeSet<T> tmp = new TreeSet<T>();
while (it.hasNext()) tmp.add(it.next());
return tmp.iterator();
}
// Esercizio 3
/*
* Usare la classe TreeSet per eliminare i duplicati
* da un iteratore su una struttura di elementi che implementano
* Comparable<E>, restituendo in output un iteratore che scorre
* i dati secondo l'ordine indotto dal metodo compareTo();
*/
public static <E extends Comparable >
}
@@ -0,0 +1,50 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
new IteratoreSenzaDuplicati().run();
}
public void run() {
List<String> lista = new ArrayList<String>();
lista.add("tree");
lista.add("flower");
lista.add("tree");
lista.add("flower");
lista.add("animal");
lista.add("flower");
lista.add("fruit");
}
// Esercizio 1
/*
* Passare una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicatesOrdinated(Iterator<T> it) {
TreeSet<T> tmp = new TreeSet<T>();
}
}
@@ -0,0 +1,30 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.List;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
new IteratoreSenzaDuplicati().run();
}
public void run() {
List<String> lista = new ArrayList<String>();
lista.add("tree");
lista.add("flower");
lista.add("tree");
lista.add("flower");
lista.add("animal");
lista.add("flower");
lista.add("fruit");
}
// Esercizio 1
}
@@ -0,0 +1,64 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
Set<Integer> bHashSet = new HashSet<Integer>(Arrays.asList(bArray));
}
// Operazioni di insiemistica
/*
* Per eseguire una unione, è conveniente
* adoperare la Set poichè l'implementazione
* TreeSet permette di non mantenere duplicati.
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
Set<T> union = new HashSet<T>();
union.addAll(s1);
union.addAll(s2);
return union;
}
/*
* Per eseguire una intersezione, è conveniente
* adoperare la Set allo stesso modo
*/
public static <T extends Comparable<? super T>> Set<T> intersection(Set<T> s1, Set<T> s2) {
Set<T> intersection = new HashSet<T>();
intersection.addAll(s1);
intersection.retainAll(s2);
return intersection;
}
/*
* Per eseguire la differenza, si usa
* la Set
*/
public static <T extends Comparable<? super T>> Set<T> difference(Set<T> s1, Set<T> s2) {
Set<T> difference = new HashSet<T>();
difference.addAll(s1);
difference.removeAll(s2);
return difference;
}
public static Set<Integer> abs(Set<Integer> s) {
Set<Integer> abs = HashSet<Integer>();
Iterator<Integer> it = s.iterator();
}
}
@@ -0,0 +1,69 @@
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<String> lista = new ArrayList<String>();
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<String> testList = new LinkedList<String>();
Iterator<String> 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<String>();
System.gc();
}
// Esercizio 1
/*
* Passare una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicatesOrdinated(Iterator<T> it) {
TreeSet<T> tmp = new TreeSet<T>();
while (it.hasNext()) tmp.add(it.next());
return tmp.iterator();
}
}
@@ -0,0 +1,37 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.List;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
new IteratoreSenzaDuplicati().run();
}
public void run() {
List<String> lista = new ArrayList<String>();
lista.add("tree");
lista.add("flower");
lista.add("tree");
lista.add("flower");
lista.add("animal");
lista.add("flower");
lista.add("fruit");
}
// Esercizio 1
/*
* Ottenere una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T> Iterator<T> getIteratorNoDuplicates() {
}
}
@@ -0,0 +1,38 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
new IteratoreSenzaDuplicati().run();
}
public void run() {
List<String> lista = new ArrayList<String>();
lista.add("tree");
lista.add("flower");
lista.add("tree");
lista.add("flower");
lista.add("animal");
lista.add("flower");
lista.add("fruit");
}
// Esercizio 1
/*
* Ottenere una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp =
}
}
@@ -0,0 +1,46 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class EsercizioParole {
/*
* EX1 del 27-01-2026 (I Appello)
* Si scriva un metodo
* public List<String> DifferentWordsList(List<String>)
* che, data in input una lista di stringhe, restituisce una
* nuova lista priva di elementi duplicati, contenente tutte le
* stringhe distinte di list e ordinata per lunghezze decrescenti
* (a parità di lunghezza ordinamento lessicografico crescente)
*/
public List<String> DifferentWordsList(List<String> lista) {
Set<String> listaOrd = new TreeSet<String>(new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
int l1 = s1.length();
int l2 = s2.length();
int cmp = Integer.compare(l2, l1);
if (cmp != 0) return cmp;
return s1.compareTo();
}
});
if (lista == null || lista.isEmpty()) return new ArrayList<String>(listaOrd);
Iterator<String> it = lista.iterator();
while (it.hasNext()) {
listaOrd.add(it.next());
}
return new ArrayList<String>(listaOrd);
}
}
@@ -0,0 +1,67 @@
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<String> lista = new ArrayList<String>();
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<String> testList = new LinkedList<String>();
Iterator<String> itNoDup = getIteratorNoDuplicates(lista.iterator());
while (itNoDup.hasNext()) testList.add(itNoDup.next());
System.out.println("Lista senza duplicati: ");
System.out.println(testList);
System.out.println();
}
// Esercizio 1
/*
* Passare una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicatesOrdinated(Iterator<T> it) {
TreeSet<T> tmp = new TreeSet<T>();
while (it.hasNext()) tmp.add(it.next());
return tmp.iterator();
}
}
@@ -0,0 +1,16 @@
package jcf_set.exercise;
public class EsercizioParole {
/*
* EX1 del 27-01-2026 (I Appello)
* Si scriva un metodo
* public List<String> DifferentWordsList(List<String>)
* che, data in input una lista di stringhe, restituisce una
* nuova lista priva di elementi duplicati, contenente tutte le
* stringhe distinte di list e ordinata per lunghezze decrescenti
* (a parità di lunghezza ordinamento lessicografico crescente)
*/
}
@@ -0,0 +1,44 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
Set<Integer> bHashSet = new HashSet<Integer>(Arrays.asList(bArray));
}
// Operazioni di insiemistica
/*
* Per eseguire una unione, è conveniente
* adoperare la Set poichè l'implementazione
* TreeSet permette di non mantenere duplicati.
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
Set<T> union = new HashSet<T>();
union.addAll(s1);
union.addAll(s2);
return union;
}
/*
* Per eseguire una intersezione, è conveniente
* adoperare la Set allo stesso modo
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
Set<T> intersection = new HashSet<T();
}
}
@@ -0,0 +1,53 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.TreeSet;
import java.util.Iterator;
import java.util.List;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
new IteratoreSenzaDuplicati().run();
}
public void run() {
List<String> lista = new ArrayList<String>();
lista.add("tree");
lista.add("flower");
lista.add("tree");
lista.add("flower");
lista.add("animal");
lista.add("flower");
lista.add("fruit");
}
// Esercizio 1
/*
* Passare una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicatesOrdinated(Iterator<T> it) {
TreeSet<T> tmp = new TreeSet<T>();
while (it.hasNext()) tmp.add(it.next());
return tmp.iterator();
}
}
@@ -0,0 +1,60 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.TreeSet;
import java.util.Iterator;
import java.util.List;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
new IteratoreSenzaDuplicati().run();
}
public void run() {
List<String> lista = new ArrayList<String>();
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<String> testList = new LinkedList<String>();
}
// Esercizio 1
/*
* Passare una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicatesOrdinated(Iterator<T> it) {
TreeSet<T> tmp = new TreeSet<T>();
while (it.hasNext()) tmp.add(it.next());
return tmp.iterator();
}
}
@@ -0,0 +1,42 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
Set<Integer> bHashSet = new HashSet<Integer>(Arrays.asList(bArray));
}
// Operazioni di insiemistica
/*
* Per eseguire una unione, è conveniente
* adoperare la Set poichè l'implementazione
* TreeSet permette di non mantenere duplicati.
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
Set<T> union = new HashSet<T>();
union.addAll(s1);
union.addAll(s2);
return union;
}
/*
* Per eseguire una intersezione, è conveniente
* adoperare la Set allo stesso modo
*/
}
@@ -0,0 +1,62 @@
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<String> lista = new ArrayList<String>();
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<String> testList = new LinkedList<String>();
}
// Esercizio 1
/*
* Passare una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicatesOrdinated(Iterator<T> it) {
TreeSet<T> tmp = new TreeSet<T>();
while (it.hasNext()) tmp.add(it.next());
return tmp.iterator();
}
}
@@ -0,0 +1,39 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class EsercizioParole {
/*
* EX1 del 27-01-2026 (I Appello)
* Si scriva un metodo
* public List<String> DifferentWordsList(List<String>)
* che, data in input una lista di stringhe, restituisce una
* nuova lista priva di elementi duplicati, contenente tutte le
* stringhe distinte di list e ordinata per lunghezze decrescenti
* (a parità di lunghezza ordinamento lessicografico crescente)
*/
public List<String> DifferentWordsList(List<String> lista) {
Set<String> listaOrd = new TreeSet<String>(new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s2.length().compareTo(s1.length());
}
});
if (lista == null || lista.isEmpty()) return new ArrayList<String>(listaOrd);
Iterator<String> it = lista.iterator();
while (it.hasNext()) {
listaOrd.add(it.next());
}
return new ArrayList<String>(listaOrd);
}
}
@@ -0,0 +1,57 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.TreeSet;
import java.util.Iterator;
import java.util.List;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
new IteratoreSenzaDuplicati().run();
}
public void run() {
List<String> lista = new ArrayList<String>();
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();
System.out.println(lista);
}
// Esercizio 1
/*
* Passare una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicatesOrdinated(Iterator<T> it) {
TreeSet<T> tmp = new TreeSet<T>();
while (it.hasNext()) tmp.add(it.next());
return tmp.iterator();
}
}
@@ -0,0 +1,30 @@
package jcf_set.exercise;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class EsercizioParole {
/*
* EX1 del 27-01-2026 (I Appello)
* Si scriva un metodo
* public List<String> DifferentWordsList(List<String>)
* che, data in input una lista di stringhe, restituisce una
* nuova lista priva di elementi duplicati, contenente tutte le
* stringhe distinte di list e ordinata per lunghezze decrescenti
* (a parità di lunghezza ordinamento lessicografico crescente)
*/
public List<String> DifferentWordsList(List<String> lista) {
Set<String> listaOrd = new TreeSet<String>(new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s2.compareTo(s1);
}
});
if (lista == null || lista.isEmpty()) return listaOrd;
}
}
@@ -0,0 +1,40 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
new IteratoreSenzaDuplicati().run();
}
public void run() {
List<String> lista = new ArrayList<String>();
lista.add("tree");
lista.add("flower");
lista.add("tree");
lista.add("flower");
lista.add("animal");
lista.add("flower");
lista.add("fruit");
}
// Esercizio 1
/*
* Ottenere una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
while ()
}
}
@@ -0,0 +1,75 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
Set<Integer> bHashSet = new HashSet<Integer>(Arrays.asList(bArray));
// Stampa delle due collezioni
System.out.println("Stampa della collezone a: ");
System.out.println(aHashSet);
System.out.println("Stampa della collezione b: ");
System.out.println(bHashSet);
// Unione
System.out.println("Stampa della unione: ");
System.out.println(union());
}
// Operazioni di insiemistica
/*
* Per eseguire una unione, è conveniente
* adoperare la Set poichè l'implementazione
* TreeSet permette di non mantenere duplicati.
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
Set<T> union = new HashSet<T>();
union.addAll(s1);
union.addAll(s2);
return union;
}
/*
* Per eseguire una intersezione, è conveniente
* adoperare la Set allo stesso modo
*/
public static <T extends Comparable<? super T>> Set<T> intersection(Set<T> s1, Set<T> s2) {
Set<T> intersection = new HashSet<T>();
intersection.addAll(s1);
intersection.retainAll(s2);
return intersection;
}
/*
* Per eseguire la differenza, si usa
* la Set
*/
public static <T extends Comparable<? super T>> Set<T> difference(Set<T> s1, Set<T> s2) {
Set<T> difference = new HashSet<T>();
difference.addAll(s1);
difference.removeAll(s2);
return difference;
}
public static Set<Integer> abs(Set<Integer> s) {
Set<Integer> abs = new HashSet<Integer>();
Iterator<Integer> it = s.iterator();
while (it.hasNext()) abs.add(Math.abs(it.next()));
return abs;
}
}
@@ -0,0 +1,63 @@
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<String> lista = new ArrayList<String>();
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<String> testList = new LinkedList<String>();
Iterator<String> itNoDup = getIteratorNoDuplicates(lista.iterator());
while (itNoDup.hasNext()) testList.add(itNoDup.next());
}
// Esercizio 1
/*
* Passare una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicatesOrdinated(Iterator<T> it) {
TreeSet<T> tmp = new TreeSet<T>();
while (it.hasNext()) tmp.add(it.next());
return tmp.iterator();
}
}
@@ -0,0 +1,16 @@
package jcf_set.exercise;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
}
}
@@ -0,0 +1,40 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
new IteratoreSenzaDuplicati().run();
}
public void run() {
List<String> lista = new ArrayList<String>();
lista.add("tree");
lista.add("flower");
lista.add("tree");
lista.add("flower");
lista.add("animal");
lista.add("flower");
lista.add("fruit");
}
// Esercizio 1
/*
* Ottenere una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
}
}
@@ -0,0 +1,28 @@
package jcf_set.exercise;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class EsercizioParole {
/*
* EX1 del 27-01-2026 (I Appello)
* Si scriva un metodo
* public List<String> DifferentWordsList(List<String>)
* che, data in input una lista di stringhe, restituisce una
* nuova lista priva di elementi duplicati, contenente tutte le
* stringhe distinte di list e ordinata per lunghezze decrescenti
* (a parità di lunghezza ordinamento lessicografico crescente)
*/
public List<String> DifferentWordsList(List<String> lista) {
Set<String> listaOrd = new TreeSet<String>(new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s2.compareTo(s1);
}
});
}
}
@@ -0,0 +1,84 @@
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<String> lista = new ArrayList<String>();
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<String> testList = new LinkedList<String>();
Iterator<String> 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<String>();
System.gc();
Iterator<String> 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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicatesOrdinated(Iterator<T> it) {
TreeSet<T> tmp = new TreeSet<T>();
while (it.hasNext()) tmp.add(it.next());
return tmp.iterator();
}
// Esercizio 3
/*
* Usare la classe TreeSet per eliminare i duplicati
* da un iteratore su una struttura di elementi che implementano
* Comparable<E>, restituendo in output un iteratore che scorre
* i dati secondo l'ordine indotto dal metodo compareTo();
*/
public static <E extends Comparable<? super E>> Iterator<E>
}
@@ -0,0 +1,80 @@
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<String> lista = new ArrayList<String>();
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<String> testList = new LinkedList<String>();
Iterator<String> 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<String>();
System.gc();
Iterator<String> 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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicatesOrdinated(Iterator<T> it) {
TreeSet<T> tmp = new TreeSet<T>();
while (it.hasNext()) tmp.add(it.next());
return tmp.iterator();
}
// Esercizio 3
/*
*
*/
}
@@ -0,0 +1,66 @@
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<String> lista = new ArrayList<String>();
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<String> testList = new LinkedList<String>();
Iterator<String> itNoDup = getIteratorNoDuplicates(lista.iterator());
while (itNoDup.hasNext()) testList.add(itNoDup.next());
System.out.println("Lista senza duplicati: ");
System.out.println(testList);
}
// Esercizio 1
/*
* Passare una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicatesOrdinated(Iterator<T> it) {
TreeSet<T> tmp = new TreeSet<T>();
while (it.hasNext()) tmp.add(it.next());
return tmp.iterator();
}
}
@@ -0,0 +1,38 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
new IteratoreSenzaDuplicati().run();
}
public void run() {
List<String> lista = new ArrayList<String>();
lista.add("tree");
lista.add("flower");
lista.add("tree");
lista.add("flower");
lista.add("animal");
lista.add("flower");
lista.add("fruit");
}
// Esercizio 1
/*
* Ottenere una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
}
}
@@ -0,0 +1,27 @@
package jcf_set.exercise;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class EsercizioParole {
/*
* EX1 del 27-01-2026 (I Appello)
* Si scriva un metodo
* public List<String> DifferentWordsList(List<String>)
* che, data in input una lista di stringhe, restituisce una
* nuova lista priva di elementi duplicati, contenente tutte le
* stringhe distinte di list e ordinata per lunghezze decrescenti
* (a parità di lunghezza ordinamento lessicografico crescente)
*/
public List<String> DifferentWordsList(List<String> lista) {
Set<String> listaOrd = new TreeSet<String>(new Comparator() {
@Override
public int compare(String s1, String s2) {
return s2.compareTo(s1);
}
});
}
}
@@ -0,0 +1,39 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class EsercizioParole {
/*
* EX1 del 27-01-2026 (I Appello)
* Si scriva un metodo
* public List<String> DifferentWordsList(List<String>)
* che, data in input una lista di stringhe, restituisce una
* nuova lista priva di elementi duplicati, contenente tutte le
* stringhe distinte di list e ordinata per lunghezze decrescenti
* (a parità di lunghezza ordinamento lessicografico crescente)
*/
public List<String> DifferentWordsList(List<String> lista) {
Set<String> listaOrd = new TreeSet<String>(new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s2.length().compareTo(s1);
}
});
if (lista == null || lista.isEmpty()) return new ArrayList<String>(listaOrd);
Iterator<String> it = lista.iterator();
while (it.hasNext()) {
listaOrd.add(it.next());
}
return new ArrayList<String>(listaOrd);
}
}
@@ -0,0 +1,34 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class EsercizioParole {
/*
* EX1 del 27-01-2026 (I Appello)
* Si scriva un metodo
* public List<String> DifferentWordsList(List<String>)
* che, data in input una lista di stringhe, restituisce una
* nuova lista priva di elementi duplicati, contenente tutte le
* stringhe distinte di list e ordinata per lunghezze decrescenti
* (a parità di lunghezza ordinamento lessicografico crescente)
*/
public List<String> DifferentWordsList(List<String> lista) {
Set<String> listaOrd = new TreeSet<String>(new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s2.compareTo(s1);
}
});
if (lista == null || lista.isEmpty()) return new ArrayList<String>(listaOrd);
Iterator<String>
}
}
@@ -0,0 +1,47 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
new IteratoreSenzaDuplicati().run();
}
public void run() {
List<String> lista = new ArrayList<String>();
lista.add("tree");
lista.add("flower");
lista.add("tree");
lista.add("flower");
lista.add("animal");
lista.add("flower");
lista.add("fruit");
}
// Esercizio 1
/*
* Ottenere una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
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.
*/
}
@@ -0,0 +1,61 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.TreeSet;
import java.util.Iterator;
import java.util.List;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
new IteratoreSenzaDuplicati().run();
}
public void run() {
List<String> lista = new ArrayList<String>();
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();
// Stampa collections
}
// Esercizio 1
/*
* Passare una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicatesOrdinated(Iterator<T> it) {
TreeSet<T> tmp = new TreeSet<T>();
while (it.hasNext()) tmp.add(it.next());
return tmp.iterator();
}
}
@@ -0,0 +1,34 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
Set<Integer> bHashSet = new HashSet<Integer>(Arrays.asList(bArray));
}
// Operazioni di insiemistica
/*
* Per eseguire una unione, è conveniente
* adoperare la Set poichè l'implementazione
* TreeSet permette di non mantenere duplicati.
*/
public static <T extends Comparable<? super T>> Set<T> union () {
}
}
@@ -0,0 +1,33 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class EsercizioParole {
/*
* EX1 del 27-01-2026 (I Appello)
* Si scriva un metodo
* public List<String> DifferentWordsList(List<String>)
* che, data in input una lista di stringhe, restituisce una
* nuova lista priva di elementi duplicati, contenente tutte le
* stringhe distinte di list e ordinata per lunghezze decrescenti
* (a parità di lunghezza ordinamento lessicografico crescente)
*/
public List<String> DifferentWordsList(List<String> lista) {
Set<String> listaOrd = new TreeSet<String>(new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s2.compareTo(s1);
}
});
if (lista == null || lista.isEmpty()) return new ArrayList(listaOrd);
}
}
@@ -0,0 +1,32 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
Set<Integer> bHashSet = new HashSet<Integer>(Arrays.asList(bArray));
}
// Operazioni di insiemistica
/*
* Per eseguire una unione, è conveniente
* adoperare la Set poichè l'implementazione
* TreeSet permette di non mantenere duplicati.
*/
public static <T>
}
@@ -0,0 +1,51 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.TreeSet;
import java.util.Iterator;
import java.util.List;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
new IteratoreSenzaDuplicati().run();
}
public void run() {
List<String> lista = new ArrayList<String>();
lista.add("tree");
lista.add("flower");
lista.add("tree");
lista.add("flower");
lista.add("animal");
lista.add("flower");
lista.add("fruit");
}
// Esercizio 1
/*
* Passare una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicatesOrdinated(Iterator<T> it) {
TreeSet<T> tmp = new TreeSet<T>();
}
}
@@ -0,0 +1,62 @@
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<String> lista = new ArrayList<String>();
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<String> testList = new LinkedList<String>();
}
// Esercizio 1
/*
* Passare una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicatesOrdinated(Iterator<T> it) {
TreeSet<T> tmp = new TreeSet<T>();
while (it.hasNext()) tmp.add(it.next());
return tmp.iterator();
}
}
@@ -0,0 +1,34 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
Set<Integer> bHashSet = new HashSet<Integer>(Arrays.asList(bArray));
}
// Operazioni di insiemistica
/*
* Per eseguire una unione, è conveniente
* adoperare la Set poichè l'implementazione
* TreeSet permette di non mantenere duplicati.
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
}
}
@@ -0,0 +1,54 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.TreeSet;
import java.util.Iterator;
import java.util.List;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
new IteratoreSenzaDuplicati().run();
}
public void run() {
List<String> lista = new ArrayList<String>();
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();
}
// Esercizio 1
/*
* Passare una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicatesOrdinated(Iterator<T> it) {
TreeSet<T> tmp = new TreeSet<T>();
while (it.hasNext()) tmp.add(it.next());
return tmp.iterator();
}
}
@@ -0,0 +1,17 @@
package jcf_set.exercise;
import java.util.List;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
new IteratoreSenzaDuplicati().run();
}
public void run() {
List<String> lista =
}
}
@@ -0,0 +1,50 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
new IteratoreSenzaDuplicati().run();
}
public void run() {
List<String> lista = new ArrayList<String>();
lista.add("tree");
lista.add("flower");
lista.add("tree");
lista.add("flower");
lista.add("animal");
lista.add("flower");
lista.add("fruit");
}
// Esercizio 1
/*
* Passare una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicatesOrdinated(Iterator<T> it) {
}
}
@@ -0,0 +1,38 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
new IteratoreSenzaDuplicati().run();
}
public void run() {
List<String> lista = new ArrayList<String>();
lista.add("tree");
lista.add("flower");
lista.add("tree");
lista.add("flower");
lista.add("animal");
lista.add("flower");
lista.add("fruit");
}
// Esercizio 1
/*
* Ottenere una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T> Iterator<T> getIteratorNoDuplicates() {
}
}
@@ -0,0 +1,38 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class EsercizioParole {
/*
* EX1 del 27-01-2026 (I Appello)
* Si scriva un metodo
* public List<String> DifferentWordsList(List<String>)
* che, data in input una lista di stringhe, restituisce una
* nuova lista priva di elementi duplicati, contenente tutte le
* stringhe distinte di list e ordinata per lunghezze decrescenti
* (a parità di lunghezza ordinamento lessicografico crescente)
*/
public List<String> DifferentWordsList(List<String> lista) {
Set<String> listaOrd = new TreeSet<String>(new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s2.compareTo(s1);
}
});
if (lista == null || lista.isEmpty()) return new ArrayList<String>(listaOrd);
Iterator<String> it = lista.iterator();
while (it.hasNext()) {
listaOrd.add();
}
}
}
@@ -0,0 +1,38 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class EsercizioParole {
/*
* EX1 del 27-01-2026 (I Appello)
* Si scriva un metodo
* public List<String> DifferentWordsList(List<String>)
* che, data in input una lista di stringhe, restituisce una
* nuova lista priva di elementi duplicati, contenente tutte le
* stringhe distinte di list e ordinata per lunghezze decrescenti
* (a parità di lunghezza ordinamento lessicografico crescente)
*/
public List<String> DifferentWordsList(List<String> lista) {
Set<String> listaOrd = new TreeSet<String>(new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s2.compareTo(s1);
}
});
if (lista == null || lista.isEmpty()) return new ArrayList<String>(listaOrd);
Iterator<String> it = lista.iterator();
while (it.hasNext()) {
}
}
}
@@ -0,0 +1,78 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
Set<Integer> bHashSet = new HashSet<Integer>(Arrays.asList(bArray));
// Stampa delle due collezioni
System.out.println("Stampa della collezone a: ");
System.out.println(aHashSet);
System.out.println("Stampa della collezione b: ");
System.out.println(bHashSet);
// Unione
System.out.println("Stampa della unione: ");
System.out.println(union(aHashSet, bHashSet));
// Intersezione
System.out.println();
}
// Operazioni di insiemistica
/*
* Per eseguire una unione, è conveniente
* adoperare la Set poichè l'implementazione
* TreeSet permette di non mantenere duplicati.
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
Set<T> union = new HashSet<T>();
union.addAll(s1);
union.addAll(s2);
return union;
}
/*
* Per eseguire una intersezione, è conveniente
* adoperare la Set allo stesso modo
*/
public static <T extends Comparable<? super T>> Set<T> intersection(Set<T> s1, Set<T> s2) {
Set<T> intersection = new HashSet<T>();
intersection.addAll(s1);
intersection.retainAll(s2);
return intersection;
}
/*
* Per eseguire la differenza, si usa
* la Set
*/
public static <T extends Comparable<? super T>> Set<T> difference(Set<T> s1, Set<T> s2) {
Set<T> difference = new HashSet<T>();
difference.addAll(s1);
difference.removeAll(s2);
return difference;
}
public static Set<Integer> abs(Set<Integer> s) {
Set<Integer> abs = new HashSet<Integer>();
Iterator<Integer> it = s.iterator();
while (it.hasNext()) abs.add(Math.abs(it.next()));
return abs;
}
}
@@ -0,0 +1,12 @@
package jcf_set.exercise;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
}
}
@@ -0,0 +1,34 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.List;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
new IteratoreSenzaDuplicati().run();
}
public void run() {
List<String> lista = new ArrayList<String>();
lista.add("tree");
lista.add("flower");
lista.add("tree");
lista.add("flower");
lista.add("animal");
lista.add("flower");
lista.add("fruit");
}
// Esercizio 1
/*
* Ottenere una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
}
@@ -0,0 +1,71 @@
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<String> lista = new ArrayList<String>();
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<String> testList = new LinkedList<String>();
Iterator<String> 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<String>();
System.gc();
Iterator<String> itNoDup = getIteratorNoDuplicatesOrdinated();
}
// Esercizio 1
/*
* Passare una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicatesOrdinated(Iterator<T> it) {
TreeSet<T> tmp = new TreeSet<T>();
while (it.hasNext()) tmp.add(it.next());
return tmp.iterator();
}
}
@@ -0,0 +1,72 @@
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<String> lista = new ArrayList<String>();
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<String> testList = new LinkedList<String>();
Iterator<String> 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<String>();
System.gc();
Iterator<String> itNoDup = getIteratorNoDuplicatesOrdinated(lista.iterator());
while (itNoDup.hasNext()) testList.add();
}
// Esercizio 1
/*
* Passare una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicatesOrdinated(Iterator<T> it) {
TreeSet<T> tmp = new TreeSet<T>();
while (it.hasNext()) tmp.add(it.next());
return tmp.iterator();
}
}
@@ -0,0 +1,67 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
Set<Integer> bHashSet = new HashSet<Integer>(Arrays.asList(bArray));
// Unione
}
// Operazioni di insiemistica
/*
* Per eseguire una unione, è conveniente
* adoperare la Set poichè l'implementazione
* TreeSet permette di non mantenere duplicati.
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
Set<T> union = new HashSet<T>();
union.addAll(s1);
union.addAll(s2);
return union;
}
/*
* Per eseguire una intersezione, è conveniente
* adoperare la Set allo stesso modo
*/
public static <T extends Comparable<? super T>> Set<T> intersection(Set<T> s1, Set<T> s2) {
Set<T> intersection = new HashSet<T>();
intersection.addAll(s1);
intersection.retainAll(s2);
return intersection;
}
/*
* Per eseguire la differenza, si usa
* la Set
*/
public static <T extends Comparable<? super T>> Set<T> difference(Set<T> s1, Set<T> s2) {
Set<T> difference = new HashSet<T>();
difference.addAll(s1);
difference.removeAll(s2);
return difference;
}
public static Set<Integer> abs(Set<Integer> s) {
Set<Integer> abs = new HashSet<Integer>();
Iterator<Integer> it = s.iterator();
while (it.hasNext()) abs.add(Math.abs(it.next()));
return abs;
}
}
@@ -0,0 +1,42 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class EsercizioParole {
/*
* EX1 del 27-01-2026 (I Appello)
* Si scriva un metodo
* public List<String> DifferentWordsList(List<String>)
* che, data in input una lista di stringhe, restituisce una
* nuova lista priva di elementi duplicati, contenente tutte le
* stringhe distinte di list e ordinata per lunghezze decrescenti
* (a parità di lunghezza ordinamento lessicografico crescente)
*/
public List<String> DifferentWordsList(List<String> lista) {
Set<String> listaOrd = new TreeSet<String>(new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
int l1 = s1.length();
int l2 = s2.length();
int cmp =
}
});
if (lista == null || lista.isEmpty()) return new ArrayList<String>(listaOrd);
Iterator<String> it = lista.iterator();
while (it.hasNext()) {
listaOrd.add(it.next());
}
return new ArrayList<String>(listaOrd);
}
}
@@ -0,0 +1,9 @@
package jcf_set.exercise;
public class Insiemistica {
public static void main(String[] main) {
}
}
@@ -0,0 +1,47 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
Set<Integer> bHashSet = new HashSet<Integer>(Arrays.asList(bArray));
}
// Operazioni di insiemistica
/*
* Per eseguire una unione, è conveniente
* adoperare la Set poichè l'implementazione
* TreeSet permette di non mantenere duplicati.
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
Set<T> union = new HashSet<T>();
union.addAll(s1);
union.addAll(s2);
return union;
}
/*
* Per eseguire una intersezione, è conveniente
* adoperare la Set allo stesso modo
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
Set<T> intersection = new HashSet<T>();
intersection.addAll(s1);
intersection.retainAll(s2);
return intersection;
}
}
@@ -0,0 +1,63 @@
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<String> lista = new ArrayList<String>();
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<String> testList = new LinkedList<String>();
Iterator<String> itNoDup = getIteratorNoDuplicates(lista.iterator());
while (itNoDup.hasNext()) testList.add();
}
// Esercizio 1
/*
* Passare una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicatesOrdinated(Iterator<T> it) {
TreeSet<T> tmp = new TreeSet<T>();
while (it.hasNext()) tmp.add(it.next());
return tmp.iterator();
}
}
@@ -0,0 +1,58 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
Set<Integer> bHashSet = new HashSet<Integer>(Arrays.asList(bArray));
}
// Operazioni di insiemistica
/*
* Per eseguire una unione, è conveniente
* adoperare la Set poichè l'implementazione
* TreeSet permette di non mantenere duplicati.
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
Set<T> union = new HashSet<T>();
union.addAll(s1);
union.addAll(s2);
return union;
}
/*
* Per eseguire una intersezione, è conveniente
* adoperare la Set allo stesso modo
*/
public static <T extends Comparable<? super T>> Set<T> intersection(Set<T> s1, Set<T> s2) {
Set<T> intersection = new HashSet<T>();
intersection.addAll(s1);
intersection.retainAll(s2);
return intersection;
}
/*
* Per eseguire la differenza, si usa
* la Set
*/
public static <T extends Comparable<? super T>> Set<T> difference(Set<T> s1, Set<T> s2) {
Set<T> difference = new HashSet<T>();
difference.addAll(s1);
difference.removeAll(s2);
return difference;
}
}
@@ -0,0 +1,7 @@
package jcf_set.exercise;
public class IteratoreSenzaDuplicati {
}
@@ -0,0 +1,57 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.TreeSet;
import java.util.Iterator;
import java.util.List;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
new IteratoreSenzaDuplicati().run();
}
public void run() {
List<String> lista = new ArrayList<String>();
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);
}
// Esercizio 1
/*
* Passare una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicatesOrdinated(Iterator<T> it) {
TreeSet<T> tmp = new TreeSet<T>();
while (it.hasNext()) tmp.add(it.next());
return tmp.iterator();
}
}
@@ -0,0 +1,30 @@
package jcf_set.exercise;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class EsercizioParole {
/*
* EX1 del 27-01-2026 (I Appello)
* Si scriva un metodo
* public List<String> DifferentWordsList(List<String>)
* che, data in input una lista di stringhe, restituisce una
* nuova lista priva di elementi duplicati, contenente tutte le
* stringhe distinte di list e ordinata per lunghezze decrescenti
* (a parità di lunghezza ordinamento lessicografico crescente)
*/
public List<String> DifferentWordsList(List<String> lista) {
Set<String> listaOrd = new TreeSet<String>(new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s2.compareTo(s1);
}
});
if ()
}
}
@@ -0,0 +1,63 @@
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<String> lista = new ArrayList<String>();
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<String> testList = new LinkedList<String>();
Iterator<String> itNoDup = getIteratorNoDuplicates(lista.iterator());
while (itNoDup.hasNext())
}
// Esercizio 1
/*
* Passare una lista con duplicati.
* Ottenere un iteratore privo di duplicati.
*/
private static <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicatesOrdinated(Iterator<T> it) {
TreeSet<T> tmp = new TreeSet<T>();
while (it.hasNext()) tmp.add(it.next());
return tmp.iterator();
}
}
@@ -0,0 +1,78 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
Set<Integer> bHashSet = new HashSet<Integer>(Arrays.asList(bArray));
// Stampa delle due collezioni
System.out.println("Stampa della collezone a: ");
System.out.println(aHashSet);
System.out.println("Stampa della collezione b: ");
System.out.println(bHashSet);
// Unione
System.out.println("Stampa della unione: ");
System.out.println(union(aHashSet, bHashSet));
// Intersezione
}
// Operazioni di insiemistica
/*
* Per eseguire una unione, è conveniente
* adoperare la Set poichè l'implementazione
* TreeSet permette di non mantenere duplicati.
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
Set<T> union = new HashSet<T>();
union.addAll(s1);
union.addAll(s2);
return union;
}
/*
* Per eseguire una intersezione, è conveniente
* adoperare la Set allo stesso modo
*/
public static <T extends Comparable<? super T>> Set<T> intersection(Set<T> s1, Set<T> s2) {
Set<T> intersection = new HashSet<T>();
intersection.addAll(s1);
intersection.retainAll(s2);
return intersection;
}
/*
* Per eseguire la differenza, si usa
* la Set
*/
public static <T extends Comparable<? super T>> Set<T> difference(Set<T> s1, Set<T> s2) {
Set<T> difference = new HashSet<T>();
difference.addAll(s1);
difference.removeAll(s2);
return difference;
}
public static Set<Integer> abs(Set<Integer> s) {
Set<Integer> abs = new HashSet<Integer>();
Iterator<Integer> it = s.iterator();
while (it.hasNext()) abs.add(Math.abs(it.next()));
return abs;
}
}
@@ -0,0 +1,25 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.List;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
new IteratoreSenzaDuplicati().run();
}
public void run() {
List<String> lista = new ArrayList<String>();
lista.add("tree");
lista.add("flower");
lista.add("tree");
lista.add("flower");
lista.add("animal");
}
}
@@ -0,0 +1,32 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
Set<Integer> bHashSet = new HashSet<Integer>(Arrays.asList(bArray));
}
// Operazioni di insiemistica
/*
* Per eseguire una unione, è conveniente
* adoperare la Set poichè l'implementazione
* TreeSet permette di non mantenere duplicati.
*/
public static <T extends Comparable<? super T>>
}
@@ -0,0 +1,55 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
Set<Integer> bHashSet = new HashSet<Integer>(Arrays.asList(bArray));
}
// Operazioni di insiemistica
/*
* Per eseguire una unione, è conveniente
* adoperare la Set poichè l'implementazione
* TreeSet permette di non mantenere duplicati.
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
Set<T> union = new HashSet<T>();
union.addAll(s1);
union.addAll(s2);
return union;
}
/*
* Per eseguire una intersezione, è conveniente
* adoperare la Set allo stesso modo
*/
public static <T extends Comparable<? super T>> Set<T> intersection(Set<T> s1, Set<T> s2) {
Set<T> intersection = new HashSet<T>();
intersection.addAll(s1);
intersection.retainAll(s2);
return intersection;
}
/*
* Per eseguire la differenza, si usa
* la Set
*/
public static <T extends Comparable<? super T>> Set<T> difference(Set<T> s1, Set<T> s2) {
}
}
@@ -0,0 +1,63 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
Set<Integer> bHashSet = new HashSet<Integer>(Arrays.asList(bArray));
}
// Operazioni di insiemistica
/*
* Per eseguire una unione, è conveniente
* adoperare la Set poichè l'implementazione
* TreeSet permette di non mantenere duplicati.
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
Set<T> union = new HashSet<T>();
union.addAll(s1);
union.addAll(s2);
return union;
}
/*
* Per eseguire una intersezione, è conveniente
* adoperare la Set allo stesso modo
*/
public static <T extends Comparable<? super T>> Set<T> intersection(Set<T> s1, Set<T> s2) {
Set<T> intersection = new HashSet<T>();
intersection.addAll(s1);
intersection.retainAll(s2);
return intersection;
}
/*
* Per eseguire la differenza, si usa
* la Set
*/
public static <T extends Comparable<? super T>> Set<T> difference(Set<T> s1, Set<T> s2) {
Set<T> difference = new HashSet<T>();
difference.addAll(s1);
difference.removeAll(s2);
return difference;
}
public static Set<Integer> abs(Set<Integer> s1) {
}
}
@@ -0,0 +1,84 @@
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<String> lista = new ArrayList<String>();
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<String> testList = new LinkedList<String>();
Iterator<String> 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<String>();
System.gc();
Iterator<String> 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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicates(Iterator<T> it) {
HashSet<T> tmp = new HashSet<T>();
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 <T extends Comparable<? super T>> Iterator<T> getIteratorNoDuplicatesOrdinated(Iterator<T> it) {
TreeSet<T> tmp = new TreeSet<T>();
while (it.hasNext()) tmp.add(it.next());
return tmp.iterator();
}
// Esercizio 3
/*
* Usare la classe TreeSet per eliminare i duplicati
* da un iteratore su una struttura di elementi che implementano
* Comparable<E>, restituendo in output un iteratore che scorre
* i dati secondo l'ordine indotto dal metodo compareTo();
*/
}
@@ -0,0 +1,13 @@
package jcf_set.exercise;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
}
public void run() {
}
}
@@ -0,0 +1,25 @@
package jcf_set.exercise;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class EsercizioParole {
/*
* EX1 del 27-01-2026 (I Appello)
* Si scriva un metodo
* public List<String> DifferentWordsList(List<String>)
* che, data in input una lista di stringhe, restituisce una
* nuova lista priva di elementi duplicati, contenente tutte le
* stringhe distinte di list e ordinata per lunghezze decrescenti
* (a parità di lunghezza ordinamento lessicografico crescente)
*/
public List<String> DifferentWordsList(List<String> lista) {
Set<String> listaOrd = new TreeSet<String>(new Comparator() {
@Override
});
}
}
@@ -0,0 +1,63 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
Set<Integer> bHashSet = new HashSet<Integer>(Arrays.asList(bArray));
}
// Operazioni di insiemistica
/*
* Per eseguire una unione, è conveniente
* adoperare la Set poichè l'implementazione
* TreeSet permette di non mantenere duplicati.
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
Set<T> union = new HashSet<T>();
union.addAll(s1);
union.addAll(s2);
return union;
}
/*
* Per eseguire una intersezione, è conveniente
* adoperare la Set allo stesso modo
*/
public static <T extends Comparable<? super T>> Set<T> intersection(Set<T> s1, Set<T> s2) {
Set<T> intersection = new HashSet<T>();
intersection.addAll(s1);
intersection.retainAll(s2);
return intersection;
}
/*
* Per eseguire la differenza, si usa
* la Set
*/
public static <T extends Comparable<? super T>> Set<T> difference(Set<T> s1, Set<T> s2) {
Set<T> difference = new HashSet<T>();
difference.addAll(s1);
difference.removeAll(s2);
return difference;
}
public static Set<Integer> abs() {
}
}
@@ -0,0 +1,34 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
Set<Integer> bHashSet = new HashSet<Integer>(Arrays.asList(bArray));
}
// Operazioni di insiemistica
/*
* Per eseguire una unione, è conveniente
* adoperare la Set poichè l'implementazione
* TreeSet permette di non mantenere duplicati.
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
Set<T>
}
}
@@ -0,0 +1,79 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
Set<Integer> bHashSet = new HashSet<Integer>(Arrays.asList(bArray));
// Stampa delle due collezioni
System.out.println("Stampa della collezone a: ");
System.out.println(aHashSet);
System.out.println("Stampa della collezione b: ");
System.out.println(bHashSet);
// Unione
System.out.println("Stampa della unione: ");
System.out.println(union(aHashSet, bHashSet));
// Intersezione
System.out.println("Stampa della intersezione: ");
System.out.println();
}
// Operazioni di insiemistica
/*
* Per eseguire una unione, è conveniente
* adoperare la Set poichè l'implementazione
* TreeSet permette di non mantenere duplicati.
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
Set<T> union = new HashSet<T>();
union.addAll(s1);
union.addAll(s2);
return union;
}
/*
* Per eseguire una intersezione, è conveniente
* adoperare la Set allo stesso modo
*/
public static <T extends Comparable<? super T>> Set<T> intersection(Set<T> s1, Set<T> s2) {
Set<T> intersection = new HashSet<T>();
intersection.addAll(s1);
intersection.retainAll(s2);
return intersection;
}
/*
* Per eseguire la differenza, si usa
* la Set
*/
public static <T extends Comparable<? super T>> Set<T> difference(Set<T> s1, Set<T> s2) {
Set<T> difference = new HashSet<T>();
difference.addAll(s1);
difference.removeAll(s2);
return difference;
}
public static Set<Integer> abs(Set<Integer> s) {
Set<Integer> abs = new HashSet<Integer>();
Iterator<Integer> it = s.iterator();
while (it.hasNext()) abs.add(Math.abs(it.next()));
return abs;
}
}
@@ -0,0 +1,24 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.List;
public class IteratoreSenzaDuplicati {
public static void main(String[] main) {
new IteratoreSenzaDuplicati().run();
}
public void run() {
List<String> lista = new ArrayList<String>();
lista.add("tree");
lista.add("flower");
lista.add("tree");
lista.add("flower");
}
}
@@ -0,0 +1,42 @@
package jcf_set.exercise;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class EsercizioParole {
/*
* EX1 del 27-01-2026 (I Appello)
* Si scriva un metodo
* public List<String> DifferentWordsList(List<String>)
* che, data in input una lista di stringhe, restituisce una
* nuova lista priva di elementi duplicati, contenente tutte le
* stringhe distinte di list e ordinata per lunghezze decrescenti
* (a parità di lunghezza ordinamento lessicografico crescente)
*/
public List<String> DifferentWordsList(List<String> lista) {
Set<String> listaOrd = new TreeSet<String>(new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
int l1 = s1.length();
int l2 = s2.length();
int cmp = Integer.compare(l2, l1);
}
});
if (lista == null || lista.isEmpty()) return new ArrayList<String>(listaOrd);
Iterator<String> it = lista.iterator();
while (it.hasNext()) {
listaOrd.add(it.next());
}
return new ArrayList<String>(listaOrd);
}
}
@@ -0,0 +1,83 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
Set<Integer> bHashSet = new HashSet<Integer>(Arrays.asList(bArray));
// Stampa delle due collezioni
System.out.println("Stampa della collezone a: ");
System.out.println(aHashSet);
System.out.println("Stampa della collezione b: ");
System.out.println(bHashSet);
// Unione
System.out.println("Stampa della unione: ");
System.out.println(union(aHashSet, bHashSet));
// Intersezione
System.out.println("Stampa della intersezione: ");
System.out.println(intersection(aHashSet, bHashSet));
// Difference
System.out.println("Stampa della differenza: ");
System.out.println();
}
// Operazioni di insiemistica
/*
* Per eseguire una unione, è conveniente
* adoperare la Set poichè l'implementazione
* TreeSet permette di non mantenere duplicati.
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
Set<T> union = new HashSet<T>();
union.addAll(s1);
union.addAll(s2);
return union;
}
/*
* Per eseguire una intersezione, è conveniente
* adoperare la Set allo stesso modo
*/
public static <T extends Comparable<? super T>> Set<T> intersection(Set<T> s1, Set<T> s2) {
Set<T> intersection = new HashSet<T>();
intersection.addAll(s1);
intersection.retainAll(s2);
return intersection;
}
/*
* Per eseguire la differenza, si usa
* la Set
*/
public static <T extends Comparable<? super T>> Set<T> difference(Set<T> s1, Set<T> s2) {
Set<T> difference = new HashSet<T>();
difference.addAll(s1);
difference.removeAll(s2);
return difference;
}
public static Set<Integer> abs(Set<Integer> s) {
Set<Integer> abs = new HashSet<Integer>();
Iterator<Integer> it = s.iterator();
while (it.hasNext()) abs.add(Math.abs(it.next()));
return abs;
}
}
@@ -0,0 +1,20 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
}
}
@@ -0,0 +1,72 @@
package jcf_set.exercise;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Insiemistica {
public static void main(String[] main) {
// Insiemi di test
Integer[] aArray = {1, -2, 3, -4, 3};
Integer[] bArray = {1, 5, -6, -4, 5};
// Input come HashSet (Ordine non garantito)
Set<Integer> aHashSet = new HashSet<Integer>(Arrays.asList(aArray));
Set<Integer> bHashSet = new HashSet<Integer>(Arrays.asList(bArray));
// Stampa delle due collezioni
System.out.println("Stampa della collezone a: ");
System.out.println();
// Unione
}
// Operazioni di insiemistica
/*
* Per eseguire una unione, è conveniente
* adoperare la Set poichè l'implementazione
* TreeSet permette di non mantenere duplicati.
*/
public static <T extends Comparable<? super T>> Set<T> union(Set<T> s1, Set<T> s2) {
Set<T> union = new HashSet<T>();
union.addAll(s1);
union.addAll(s2);
return union;
}
/*
* Per eseguire una intersezione, è conveniente
* adoperare la Set allo stesso modo
*/
public static <T extends Comparable<? super T>> Set<T> intersection(Set<T> s1, Set<T> s2) {
Set<T> intersection = new HashSet<T>();
intersection.addAll(s1);
intersection.retainAll(s2);
return intersection;
}
/*
* Per eseguire la differenza, si usa
* la Set
*/
public static <T extends Comparable<? super T>> Set<T> difference(Set<T> s1, Set<T> s2) {
Set<T> difference = new HashSet<T>();
difference.addAll(s1);
difference.removeAll(s2);
return difference;
}
public static Set<Integer> abs(Set<Integer> s) {
Set<Integer> abs = new HashSet<Integer>();
Iterator<Integer> it = s.iterator();
while (it.hasNext()) abs.add(Math.abs(it.next()));
return abs;
}
}

Some files were not shown because too many files have changed in this diff Show More