Mon problème est ceci; Je dois commander une table de données. Chaque ligne de la table est un objet (appelons-le TableObject) stocké dans une liste. Chaque colonne de données est une propriété de la classe (généralement une chaîne).Java Comparateur donné le nom de la propriété à comparer
Je dois faire l'ordonnancement typique des données lorsque l'utilisateur clique sur n'importe quelle colonne. J'ai donc pensé à changer la liste en TreeSet et à implémenter le comparateur dans mon TableObject.
Le problème vient quand j'essaye de réorganiser le TreeSet. La comparaison est assez facile au début (cheeking des exceptions en parseInt ont été omis):
public int compare(TableObject to1, TableObject to2){
TableObject t1 = to1;
TableObject t2 = to2;
int result = 1;
if(Integer.parseInt(t1.getId()) == Integer.parseInt(t2.getId())){result=0;}
if(Integer.parseInt(t1.getId()) < Integer.parseInt(t2.getId())){result=-1;}
return result;
}
Mais quand je dois modifier l'ordre par le texte des données ou par d'autres dizaines de données que le TableObject a j'ai problème. Je ne veux pas créer des dizaines de fonctions de comparaison, chacune pour un. Je préfère ne pas utiliser un interrupteur (ou une chaîne d'ifs) pour décider comment comparer l'objet.
Existe-t-il un moyen de le faire d'une certaine manière (comme Reflexive), cela n'implique pas que j'écrirai comme des centaines de lignes de presque le même code?
Merci pour tout!
Merci, semble assez facile à utiliser. – Random