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 HashSet
tiene, 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 HashSet
elementos en un TreeSet
si el tipo de elemento aún no implementa la Comparable
interfaz o si no está pasando explícitamente Comparator
al TreeSet
constructor.
Desde TreeSet
JavaDoc,
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 TreeSet
sin hacer esta pregunta fundamental también es incorrecto (respuesta de Ninja). Asumir que los tipos de objeto son String
o Integer
tambié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.
HashSet
es una colección desordenada.