Voilà j'utilise une liste que je tri de 2 maniere différente.
NB : c'est un tri de chaine de caractere.
1ere maniere (avec DisplayTag)
2eme maniere avec Collections.sort (en implémentant la méthode compare).
Je trouve pas la même chose !
DisplayTag me sort :
14800133
14800141
14800142
14800143
14800144
14800148
14800151
14800153
14800157
14800158
14800622
14802794
14802827
14810041
148128610550170E0902
148139314220479
148147202240114
148147202796990
148222502383660
148246810520398
....
....
....
148449606090166
148449606807113
148449606809137E0705
148449902090157
148449902095606
1-JW457
1-JW457
1-JW457
1-JW457
1-JW457
et avec ma méthode toute bête (avec compareTo de string), j'ai l'impression que c'est inversé mais que beaucoup de chose ne colle pas même en inversant la liste.
Le resultat avec ma méthode
1-JW457
1-JW457
1-JW457
1-JW457
1-JW457
14800133
14800141
14800142
14800143
14800144
14800148
14800151
14800153
14800157
14800158
14800622
14802794
14802827
14810041
148128610550170E0902
148139314220479
148147202240114
....
....
....
148447202918597
148447202919165
148447202919276
148447202920303
148447202921315
148447202922105
148447202922216
148447202924730E0805
148447202947670
148447206295172
148448806227192
148448810369109E0705
148448810372159E0705
148449406300690
148449406305139
148449406310602
148449602347178
148449606090166
148449606807113
148449606809137E0705
148449902090157
148449902095606
quel sort de tri me fait DisplayTag ?
J'ai regardé dans le code source de DisplayTag, mais je trouve aps le comment du pourquoi ....
Voici son code de tri (enfin je crois)
Code :
- /**
- * Compares two given objects handlig nulls and not comparable objects are handled. Not comparable objects are
- * compared using their string representation.
- * @param object1 first object to compare
- * @param object2 second object to compare
- * @return int result
- */
- private int checkNullsAndCompare(Object object1, Object object2)
- {
- int returnValue = 0;
- if (object1 instanceof Comparable && object2 instanceof Comparable)
- {
- returnValue = ((Comparable) object1).compareTo(object2);
- }
- else if (object1 != null && object2 != null)
- {
- // if object are not null and don't implement comparable, compare using string values
- returnValue = object1.toString().compareTo(object2.toString());
- }
- else if (object1 == null && object2 != null)
- {
- returnValue = 1;
- }
- else if (object1 != null && object2 == null)
- {
- returnValue = -1;
- }
- else
- {
- // both null
- returnValue = 0;
- }
- int ascendingInt = this.ascending ? 1 : -1;
- return ascendingInt * returnValue;
- }
|
Message édité par Mazda3 le 18-04-2006 à 17:22:19