Y a-t-il un comparateur Java Open-Source pour comparer des haricots par plusieurs champs pour le tri multicolores? Chaque colonne peut être triée ascédant ou descendant. P>
Pour le tri à colonne, il peut être obtenu en utilisant Je suis conscient que cette fonctionnalité est assez triviale à écrire, mais quels sont les avantages de réinventer la roue, si c'était déjà écrit et testé? P> org.apache.commons.beanutils.beancomparator code> avec
org.springframework.util.charator.invertiblecomparator code>. p>
3 Réponses :
J'ai écrit cela il y a quelques mois.
public abstract class ChainedComparator<T> implements Comparator<T> { private Comparator<T> next; @Override public int compare(T o1, T o2) { int result = doCompare(o1, o2); if (result == 0) { if (getNext() != null) { return getNext().compare(o1, o2); } } return result; } public abstract int doCompare(T o1, T o2); public Comparator<T> getNext() { return next; } public void setNext(Comparator<T> next) { this.next = next; } }
Le nom de votre classe m'a rappelé des org.apache.commons.collections.comparatoratorchain :)
Oui, c'est ce que j'ai trouvé il y a quelques minutes seulement. Peut-être devait-il en premier, avant de la mettre en œuvre :)
JSORTER est une autre alternative open source pour le tri multi-colonne en Java. http://sourceforge.net/projects/jsorter/ p>
J'ai récemment écrit un comparateur pour trier plusieurs champs dans un enregistrement de chaîne délimité. Il vous permet de définir le délimiteur, la structure d'enregistrement et les règles de tri (dont certaines sont spécifiques à un type).
Les informations requises sont ensemencées au comparateur lui-même, soit programmatiquement, soit via un fichier XML. P>
XML est validé par un fichier XSD incorporé par un package. Par exemple, ci-dessous est une mise en page d'enregistrement délimitée à l'onglet avec quatre champs (dont deux sont triables): p> Vous utiliseriez alors cela dans Java, comme si: P> Comparator<String> comparator = new RowComparator(
new XMLStructureReader(new File("layout.xml")));