Comment remplacer compareTo (Java)

Je suis un débutant en programmation et j'ai deux classes. La première classe est:

public class User implements Comparable<User>

avec le champ int age, le constructeur et le surdéfini méthode de l'interface Comparable:

 @Override
    public int compareTo(User user) {
        return user.age >= age ? -1 : 0;
    }

Deuxième classe est
public class SortUser avec une méthode pour faire un Jeu de collection à partir d'une Liste:

public Set<User> sort(List<User> list) {
        Set<User> result = new TreeSet<>();
        for (User user : list) {
            result.add(user);
        }
        return result;
    }

Il me semble que tous les User objets dans un Ensemble qui doit être triée, mais quand j'ai fait une Liste avec les 3 User objets...

 User a = new User(1);
 User b = new User(2);
 User c = new User(3);
 List<User> list = new ArrayList<>();
 list.add(c);
 list.add(a);
 list.add(b);

(Aujourd'hui la liste de l'ordre est le suivant: 312)
...et créé un Set (TreeSet) à partir de cette liste:

SortUser sortUser = new SortUser();
Set<User> set = sortUser.sort(list);

À la fin j'ai un set avec cet ordre: 13, cela signifie que seules les deux objets sont dans le set. Ce qui ne va pas?

Je n'aurais pas à les trier en l'ajoutant à un ensemble. Appelez simplement sort sur la liste.
Vous ne pouvez pas avoir un Ensemble trié. Les ensembles sont des collections non triées. Une méthode sort() besoins de trier une Liste (ou d'une autre collection ordonnée) en place, ou de revenir une Liste.
Eh bien, techniquement, vous ont un ensemble ordonné. Vous avez juste à vous assurer que la mise en œuvre spécifique prend en charge. Son tout à fait possible d'écrire un ensemble ordonné de mise en œuvre.
compareTo doit retourner -1, 0 +1 . la bonne pratique consiste à repenser hashCode() et equals()
est correcte. Envisager le standard de java.util.TreeSet - docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html C'est littéralement un ensemble ordonné de mise en œuvre.

OriginalL'auteur aLittleMind | 2017-03-17