permet de dire que j'ai une table comme ceci: Ce que je voudrais obtenir est de table comme ceci: p> première chose qui se produit est en trimes basé sur la colonne Deuxième chose qui se passe est en quelque sorte basé sur la colonne int1 code>. p>
int2 code> mais uniquement sur des lignes qui ont les mêmes numéros dans Colonne
int1 code> p>
Comment dois-je aborder ce problème sans utiliser de moteur de base de données? h3> p>
7 Réponses :
Vous le feriez normalement avec une liste vous écrivez alors un comparateur <élément> code> où
élément code> est un type contenant toutes les trois valeurs ("FOO", 5, 0 pour la première rangée , par exemple). P>
<élément> code> qui comparé les valeurs INT1 des deux objets code> objets présentés dans code> comparer code>, et si cela a donné une réponse définitive, renvoyé cette réponse ... et comparé autrement les valeurs INT2. P>
Je suppose que vous avez un objet qui a une chaîne avec 2 INTS?
Le moyen le plus simple de le faire est de faire en sorte que l'objet implémente La méthode comparèteo () comparera le premier INT en premier et s'ils sont égaux à comparer le second InTS. P> comparable code> et d'implémenter le
comparète (code> ) code> méthode. Ou vous pouvez transmettre un comparateur à
Collections.sort (YourlistofObjects, YourCustomComparator) CODE> P>
@Override
public int compareTo(MyObject o) {
// compare int1s .. if equal, compare int2s and return 0,1 or -1
}
Si seulement Java a pris en charge Lambdas ... Ceci est trivial dans tant de langues. P>
Mais, hmm, voyons. Voici deux approches générales (il existe de nombreuses variantes différentes de ces thèmes): P>
comparable code> (par exemple "" comparète ") li>
- Mettez des éléments de ce nouveau type dans une matrice ou une liste (peut-être
Liste code>) li>
- Utilisez
arrais.sort.sort code> ou collections.sort code> (ou similaire) li>
ol>
ou, p>
- Créez un tableau ou une liste imbriquée (peut-être
Liste > code>) li>
- Utilisez
arrais.sort.sort code> ou Collections.sort code> (ou similaire) à l'aide du formulaire qui prend dans un comparateur code> li> li>
ol>
codage heureux. p>
Bien d'abord définir ce que vous entendez par une "table".
Je voudrais envelopper chaque rangée dans un objet donc soit: p> rangée code> et conserver une matrice de ces code> s. Ensuite, vous pouvez soit implémenter l'interface
comparable
Arrays.sort(rows, new Comparator<Row>() {
public int compare( Row r1, Row r2 ) {
if( r1.int1 != r2.int1 ) return r1.int1-r2.int1;
else return r1.int2-r2.int2;
}
});
quelque chose comme ça?
C'est plutôt pas clair ce que vous entendez par table. Mais dans le cas général, vous triez les données en Java à l'aide d'un comparateur code> ou de la mise en œuvre de votre structure de données Par exemple P> alors vous créeriez une liste comparable code>. Dans votre cas, vous créeriez une structure de données simple qui encapsule une ligne de votre table, puis créez un comparateur
code> pour la structure de données de ligne ou avez-la d'utiliser
comparable code>.
list
java.util.collections.sort (liste >) code> pour trier vos données. P> p>
J'utiliserais un comparète à l'intérieur d'une implémentation comparateur.
Exemple d'utilisation, P>
new Comparator<YourObjectType>() { @Override public int compare(YourObjectType o1, YourObjectType o2) { return new CompareToBuilder() .append(o1.firstFieldToCompare, o2.firstFieldToCompare) .append(o1.secondFieldToCompare, o2.secondFieldToCompare) .toComparison(); } }
Pourquoi ne pas simplement écrire votre propre comparète ()? Est-ce stocké dans une base de données?