Diciamo che ho due diversi hashsets come mostrato di seguito come posso verificare che due Hashset contengano gli stessi elementi e questi due hashsets siano uguali, indipendentemente dall'ordine degli elementi in collezione, si prega di avvisare .. !!Modo per verificare se due raccolte contengono gli stessi elementi, indipendentemente dall'ordine?
Set set1=new HashSet();
set.add(new Emp("Ram","Trainer",34000));
set.add(new Emp("LalRam","Trainer",34000));
e l'altro è ..
Set set2=new HashSet();
set.add(new Emp("LalRam","Trainer",34000));
set.add(new Emp("Ram","Trainer",34000));
Il POJO dipendente è ...
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;
}*/
}
prima definire "uguale". Uguale a riferimento o equivoco? Se quest'ultimo è uguale a e hashcode definisce per la classe Emp? – MJB
Supponendo che 'Emp' abbia delle sovrascritture appropriate per' equals() 'e' hashCode() '(che probabilmente fa, data la sua presenza in una tabella hash) puoi confrontare i conteggi sui set, quindi provare ad aggiungere ogni elemento di un set all'altro. Se il metodo 'add()' restituisce sempre 'true', allora c'è una differenza. – dlev
Non è diverso dal confronto di altre raccolte. Vedi: http://stackoverflow.com/questions/50098/comparing-two-collections-for-equality. Mentre questo è .net, l'implementazione di Java dovrebbe essere praticamente la stessa. Raccomando Daniel Jennings o mbillings come risposta sono sicuro che la risposta più votata viola i termini di utilizzo di Microsofts. –