Lassen Sie mich sagen, ich habe zwei verschiedene Hashsets wie unten gezeigt, wie kann ich überprüfen, dass zwei Hashset die gleichen Elemente enthalten und diese beiden Hashsets sind gleich, unabhängig von der Reihenfolge der Elemente in der Sammlung, bitte beraten .. !!Möglichkeit zu überprüfen, ob zwei Sammlungen die gleichen Elemente enthalten, unabhängig von der Reihenfolge?
Set set1=new HashSet();
set.add(new Emp("Ram","Trainer",34000));
set.add(new Emp("LalRam","Trainer",34000));
und das andere ist ..
Set set2=new HashSet();
set.add(new Emp("LalRam","Trainer",34000));
set.add(new Emp("Ram","Trainer",34000));
Der Mitarbeiter pojo ist ...
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;
}*/
}
Zuerst definieren "gleich". Entspricht Referenz oder äquivalent? Ist letzteres, ist equals und hashcode für die Emp-Klasse definiert? – MJB
Angenommen, 'Emp' hat richtige Überschreibungen für 'equals()' und 'hashCode()' (was wahrscheinlich ist, da es in einer Hash-Tabelle vorhanden ist), könnten Sie die Anzahl der Mengen vergleichen und dann versuchen, jedes Element hinzuzufügen ein Satz zum anderen. Wenn die Methode 'add()' jemals 'true' zurückgibt, gibt es einen Unterschied. – dlev
Dies ist nicht anders als andere Sammlungen zu vergleichen. Siehe: http://stackoverflow.com/questions/50098/comparting-two-collections-for-equality. Während dies .net ist, sollte die Java-Implementierung ziemlich gleich sein. Ich empfehle Daniel Jennings oder mbillings antwort, da ich mir ziemlich sicher bin, dass die Antwort mit der höchsten Wahl gegen die Nutzungsbedingungen von Microsoft verstößt. –