Quote Originariamente inviata da Ramona. Visualizza il messaggio
dovrei creare due set<string> e infine un treeSet a cui passare le parole ottenute?
È una possibilità. Ma solo una delle soluzioni realizzabili. E comunque devi valutare in base a quello che ti è stato chiesto. Perché per me, avere i due set delle parole da f1 e f2 ordinati alfabeticamente, di per sé non serve a niente. Ma se ti è stato chiesto espressamente un motivo forse (?) c'è.
Per questo dicevo che basterebbero due HashSet per applicare velocemente la logica ("appartenenti ad f1 ma non ad f2").

Ma si potrebbe anche fare ben diversamente: per f1 un TreeSet con il Comparator specifico (leggi sotto) e per f2 un HashSet (perché devi cercare velocemente). Iteri sul TreeSet per f1, se trovi la parola nel HashSet per f2, la puoi eliminare dal TreeSet. Alla fine hai già il set risultante e già ordinato come chiesto.

Insomma, ci sono diversi approcci.

Quote Originariamente inviata da Ramona. Visualizza il messaggio
Inoltre, dovrei passargli un Comparator?
A fronte della precisazione:

L'elenco su output deve risultare ordinato per lunghezza crescente di parola e a parita' di lunghezza in ordine alfabetico.

La risposta è , in un qualche modo (o per un TreeSet o per ordinare una lista) devi usare una apposita implementazione di Comparator (scritta da te), perché il criterio di ordinamento è molto particolare: per lunghezza e poi per ordine alfabetico.