Ho due classi
class A{
int id;
String name;
public boolean equals(Object o)
{
if(o instanceof A) {
A a=(A)o;
if(a.getId().equals(this.getId()))
return true;
}
return false;
}
public int hashCode() { return id;}
//setter& getter
}
class B{
int id;
String address;
public boolean equals(Object o){
if(o instanceof B)
{
B b=(B)o;
if(b.getId().equals(this.getId()))
return true;
}
return false;
}
public int hashCode()
{ return id;}
//setter& getter
}
Ho 100.000 oggetti di tipo A e 100.000 oggetti di tipo B.
Così, ho eliminato i duplicati in entrambe le classi usando HashSet.
Ora sto confrontando HashSet<A>
e HashSet<B>
con il campo id e collochi gli oggetti con corrispondenza in un altro elenco con il seguente codice nella classe principale ..
HashSet<A> A_Set=new HashSet<>();
HashSet<B> B_Set=new HashSet<>();
for (A c1 : A_Set) {
for (B c2 : B_Set) {
if (c1.getId().equals(c2.getIid())) {
matchedData.add(c1);
}
}
}
il codice precedente impiega 15 minuti per confrontare 100.000 record ... Esiste una soluzione per aumentare le prestazioni del codice .. (con in meno tempo)