Les dejo el ejercicio CU00678B del curso básico de fundamentos de programación con Java:
Clase TestInterfaceSet:
package com.aprenderaprogramar.java.iniciacion.clase78;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
// ó import java.util.*;
public class TestInterfaceSet {
public static void main(String[] args) {
ArrayList<Set> miSet = new ArrayList<Set>();// creo el arrayList
// creo el HashSet y lo inicializo con 3 objetos String
HashSet<String> miHashSet = new HashSet<String>();
miHashSet.add("sol");miHashSet.add("luna");miHashSet.add("saturno");
// creo el TreeSet y lo inicializo con 2 objetos enteros
TreeSet<Integer> miTreeSet = new TreeSet<Integer>();
miTreeSet.add(2);miTreeSet.add(8);miTreeSet.add(5);
// inicializo el arrayList con los objetos HashSet y TreeSet
miSet.add(miHashSet);miSet.add(miTreeSet);
// Defino iteradores y variables temporales(para el iterador) para cada unos de los conjuntos
Iterator<Set> itMiSet = miSet.iterator();
//Set tmpElement;
Iterator<String> itMiHashSet = miHashSet.iterator();
String tmpString;
Iterator<Integer> itMiTreeSet = miTreeSet.descendingIterator();
Integer tmpInteger;
// inicio un bucle con iterador para visualizar cada objeto del ArrayList
while(itMiSet.hasNext()){
//tmpElement = itMiSet.next();
// inicio un bucle con iterador para visualizar cada objeto del HashSet
while(itMiHashSet.hasNext()){
// el método iterador() implementado en esta clase no garantiza el orden y de hecho lo
// ordena ascendentemente por el valor de cada string, en lugar de por el orden/posición
// dentro del HashSetlo mismo ocurre con el método toString() que da el mismo resultado:
// "luna","saturno","sol",
tmpString = itMiHashSet.next();
System.out.print("\""+tmpString+"\",");
}// end HashSet while
// inicio un bucle con iterador para visualizar cada objeto del TreeSet
while(itMiTreeSet.hasNext()){
// en esta clase TreeSet deja bien claro que existen 2 tipos de iteradores, uno ascendente
// y otro descendente (según el valor de los elementos que lo componen), por lo que se
// puede ordenar en orden descendente como pide el enunciado.
tmpInteger = itMiTreeSet.next();
System.out.print(tmpInteger+",");
}// end TreeSet while
}// end outer while
}// end main method
}// end class
Muchas gracias por sus comentarios.