Double tri en java
Résolu
barjoray
-
barjoray -
barjoray -
Bonjour,
Voila, jaimerais apprliquer un double tri a une table delements.
En fait j'ai deux colonnes String et int et j'aimerais que lorsque l'on decide de trier selon l'une des colones, la deuxieme soit aussi triees dans lordre alphabetique dans le cas de valeurs egales dans la premiere colonne.
Col 1.....Col 2
E..........2
B..........5
A..........2
C..........2
=> Resultat attendu :
Col 1.......Col 2
A............2
C............2
E............2
B............5
Pour l'instant j'obtiens seulement :
Col 1..........Col 2
E ..............2
A...............2
C...............2
B...............5
final ArrayList list = new ArrayList();
// remplissage de la liste
//...
Collections.sort(list, new DataModelComparator());
avec le comparateur suivant :
class DataModelComparator implements Comparator<>
{
public int compare(SelectableItem<> c1, SelectableItem<> c2)
{
if (sortColumnName.equals(Column1))
return ascending ? c1.getData().getName().toUpperCase().compareTo(c2.getData().getName().toUpperCase()) : c2.getData().getName().toUpperCase().compareTo(c1.getData().getName().toUpperCase());
else if (sortColumnName.equals(Column2))
return ascending ? new Integer(c1.getData().getStatus()).compareTo(new Integer(c2.getData().getStatus())) : new Integer(c2.getData().getStatus()).compareTo(new Integer(c1.getData().getStatus()));
return 0;
}
}
Avez-vous une idee pour retrier la table une fois ordonnee par le premier comparateur?
Merci d'avance de votre aide!
Voila, jaimerais apprliquer un double tri a une table delements.
En fait j'ai deux colonnes String et int et j'aimerais que lorsque l'on decide de trier selon l'une des colones, la deuxieme soit aussi triees dans lordre alphabetique dans le cas de valeurs egales dans la premiere colonne.
Col 1.....Col 2
E..........2
B..........5
A..........2
C..........2
=> Resultat attendu :
Col 1.......Col 2
A............2
C............2
E............2
B............5
Pour l'instant j'obtiens seulement :
Col 1..........Col 2
E ..............2
A...............2
C...............2
B...............5
final ArrayList list = new ArrayList();
// remplissage de la liste
//...
Collections.sort(list, new DataModelComparator());
avec le comparateur suivant :
class DataModelComparator implements Comparator<>
{
public int compare(SelectableItem<> c1, SelectableItem<> c2)
{
if (sortColumnName.equals(Column1))
return ascending ? c1.getData().getName().toUpperCase().compareTo(c2.getData().getName().toUpperCase()) : c2.getData().getName().toUpperCase().compareTo(c1.getData().getName().toUpperCase());
else if (sortColumnName.equals(Column2))
return ascending ? new Integer(c1.getData().getStatus()).compareTo(new Integer(c2.getData().getStatus())) : new Integer(c2.getData().getStatus()).compareTo(new Integer(c1.getData().getStatus()));
return 0;
}
}
Avez-vous une idee pour retrier la table une fois ordonnee par le premier comparateur?
Merci d'avance de votre aide!
A voir également:
- Double tri en java
- Double ecran - Guide
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Whatsapp double sim - Guide
- Comment faire un tri personnalisé sur excel - Guide