En mi humilde opinión, la respuesta de LazerBanana debería ser la respuesta mejor calificada y aceptada porque todas las demás respuestas que apuntan a java.util.TreeSet(o primero convertir a la lista y luego llamar Collections.sort(...)a la lista convertida) no se molestaron en preguntar OP como qué tipo de objetos HashSettiene, es decir. si esos elementos tienen un orden natural predefinido o no, y esa no es una pregunta opcional sino obligatoria.
Simplemente no puede entrar y comenzar a poner sus HashSetelementos en un TreeSetsi el tipo de elemento aún no implementa la Comparableinterfaz o si no está pasando explícitamente Comparatoral TreeSetconstructor.
Desde TreeSetJavaDoc,
Construye un nuevo conjunto de árboles vacío, ordenado según el orden natural de sus elementos. Todos los elementos insertados en el conjunto deben implementar la interfaz Comparable. Además, todos estos elementos deben ser mutuamente comparables: e1.compareTo (e2) no debe lanzar una ClassCastException para ningún elemento e1 y e2 en el conjunto. Si el usuario intenta agregar un elemento al conjunto que viola esta restricción (por ejemplo, el usuario intenta agregar un elemento de cadena a un conjunto cuyos elementos son números enteros), la llamada a agregar arrojará una ClassCastException.
Es por eso que solo todas las respuestas basadas en secuencias de Java8, donde define su comparador en el lugar, solo tienen sentido porque la implementación de comparable en POJO se vuelve opcional. El programador define el comparador como y cuando sea necesario. Tratar de recopilar TreeSetsin hacer esta pregunta fundamental también es incorrecto (respuesta de Ninja). Asumir que los tipos de objeto son Stringo Integertambién es incorrecto.
Habiendo dicho eso, otras preocupaciones como,
- Rendimiento de clasificación
- Pie de memoria (conserva el juego original y crea nuevos juegos ordenados cada vez que se realiza la clasificación o desea clasificar el juego en su lugar, etc., etc.)
también deberían ser los otros puntos relevantes. Apuntar a la API no debería ser solo una intención.
Dado que el conjunto original ya contiene solo elementos únicos y esa restricción también se mantiene mediante el conjunto ordenado, el conjunto original debe borrarse de la memoria ya que los datos están duplicados.
HashSetes una colección desordenada.