Façon de vérifier si deux Collections contiennent les mêmes éléments, indépendamment de l'ordre?

Disons que j'ai deux différents hashsets comme indiqué ci-dessous comment puis-je vérifier que les deux Hashset contiennent les mêmes éléments et ces deux hashsets sont égaux, indépendamment de l'ordre des éléments dans la collection, veuillez en informer..!!

Set set1=new HashSet();
          set.add(new Emp("Ram","Trainer",34000));
          set.add(new Emp("LalRam","Trainer",34000));

et l'autre est ..

Set set2=new HashSet();
          set.add(new Emp("LalRam","Trainer",34000));
          set.add(new Emp("Ram","Trainer",34000));

L'employé pojo est ...

class Emp //implements Comparable
{
      String name,job;
      public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getJob() {
        return job;
    }
    public void setJob(String job) {
        this.job = job;
    }
    public int getSalary() {
        return salary;
    }
    public void setSalary(int salary) {
        this.salary = salary;
    }
    int salary;
      public Emp(String n,String j,int sal)
      {
         name=n;
         job=j;
         salary=sal;
       }
      public void display()
      {
        System.out.println(name+"\t"+job+"\t"+salary);
       }



  public boolean equals(Object o)
      {

         Emp p=(Emp)o;
          return this.name.equals(p.name)&&this.job.equals(p.job) &&this.salary==p.salary;
       }
   public int hashCode()
       {
          return name.hashCode()+job.hashCode()+salary;
       }


      /* public int compareTo(Object o)
       {
          Emp e=(Emp)o;
          return this.name.compareTo(e.name);
           //return this.job.compareTo(e.job);
        //  return this.salary-e.salary;

        }*/
} 
D'abord définir des "égaux". Est égale à la référence ou equuivalent? Dans ce dernier cas, equals et hashcode définir pour les Emp de classe?
En supposant que Emp a bon remplacements pour equals() et hashCode() (ce qui n'est probablement, en raison de la présence dans une table de hachage), vous pouvez comparer les dénombrements sur les ensembles, et puis essayez d'ajouter tous les éléments d'un ensemble à l'autre. Si le add() méthode retourne jamais true, puis il y a une différence.
Ce n'est pas différent de la comparaison de toutes les autres collections. Voir: stackoverflow.com/questions/50098/.... Bien que ce est .net, java mise en œuvre devrait être à peu près la même. Je recommande Daniel Jennings ou mbillings réponse que je suis sûr que la plus haute voté réponse viole les directives de Microsoft conditions d'utilisation.
Tout d'abord, est n'est pas utile de discuter de l'élément de commande dans un Set. Les jeux ont aucun ordre implicite. Deuxièmement, vous n'avez pas spécifié de ce que vous entendez par "égaux". Pour les collections, il pourrait être la "les deux collections contiennent le même ensemble de références à des éléments réels" ou "Tous les éléments de la collection de comparaison d'égalité (via equals()) à leur élément correspondant dans la collection B". Vous semblez vouloir la dernière définition, qui est plus délicate à mettre en œuvre.
Cette question est un doublon et la bonne réponse est ici: stackoverflow.com/questions/1565214/...

OriginalL'auteur user1582269 | 2012-08-09