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]
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]