[java][collection]Comment supprimer les doublon?

  • Auteur de la discussion cisco
  • Date de début

cisco

Habitué
Voilà j'ai une collection d'objet (construit a partir de requete sur une db) et j'ai des doublons dans la collection

Je voudrai l'optimiser

Pour plus d'info, voici ce que j'ai essayé: faire un TreeSet, donc implementer dans ma classe la méthode CompareTo (de l'interface Comparable)

Mais j'ai l'impression que mon implementation n'est pas bien...

[g]Ce qui met des entrées dans la collection: [/g]
[cpp]
public Collection getDanReport(String dan_id) {
Collection results = new TreeSet();
...
While(...) {
results.add(oneDanReport);
}
return results ;
}
[/cpp]


[g]L'objet qu'on rajoute dans la collection: [/g]
[cpp]
public class DanReport implements Comparable{
private static Category _log4j = Logger.getLogger(DanReport.class.getName());

// dan
private String dan_id = null;
private String dan_ref = null;
private String dan_name = null;
...

public int compareTo(Object o) {
int mytest = 0;
if (o instanceof DanReport) {
DanReport test = (DanReport)o;

if (!this.equals(test)) {
return 1;
} else {
return 0;
}
} else return -1;
}
}
[/cpp]


Voila pour ce qui est de ce que je veux dans l'implementation de compareTo c'est un truc du genre comparaison de chaque propriété de la classe et pas plus, mais ce genre de méthode me semble lourd:

[g]Alternative?: [/g]
[cpp]
public int compareTo(Object o) {
int mytest = 0;
if (o instanceof DanReport) {
DanReport test = (DanReport)o;

try {
mytest = mytest + this.dan_id.compareTo(test.dan_id);
mytest = mytest + this.dan_ref.compareTo(test.dan_ref);
// ... test sur toute les proriété de la classe ...
} catch (Exception e) {
ErrorBean myerror = new ErrorBean();
myerror.setException(e);
_log4j.fatal(myerror.getExceptionStack());
_log4j.fatal(e);
mytest = -1;
}

} else return -1;

return mytest;
}
[/cpp]
 

KangOl

Grand Maître
[citation=2150,1][nom]cisco a écrit[/nom]Voilà j'ai une collection d'objet (construit a partir de requete sur une db)
[...]
[/citation]

optimise ta requete [:spamafote]
 

tomiotomio

Expert
[citation=2160,1][nom]kangol a écrit[/nom]

optimise ta requete [:spamafote]
[/citation]:merci:
[fixed]SELECT distinct[/fixed]
 

cisco

Habitué
c'est déjà fait, j'ai quand même des doublons parce que les objets sont en fait construit sur plusieurs requête succesive, et sur d'autre appel (corba en particulier)

Mais bon j'ai réecris (surchargé)la méthode [fixed]equals[/fixed] et ca marche...
 

FMR Hunter

Habitué
comment ca s'utilise un TreeSet ?

tu peu pas utiliser un HashTable?
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 163
Messages
6 718 670
Membres
1 586 462
Dernier membre
jhonblack
Partager cette page
Haut