47 lines
1.2 KiB
Java
47 lines
1.2 KiB
Java
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(s2);
|
|
}
|
|
});
|
|
|
|
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);
|
|
}
|
|
|
|
}
|