J'ai une classe Java personnalisée contenant deux variables: Je cherche à créer une arrayliste avec plusieurs de ces internes. Je veux ensuite les trier par ordre de plus bas au plus haut, en fonction de la valeur de leur cote highscore.class p> nom d'utilisateur code> et
score code>.
code> p>
highscore code>. Je veux ne regarder que sur le score code> code> basé sur le bas à élevé, puis trier le
highscore code> s dans une autre arrayliste. P>
ArrayList<Highscore> highscores = new ArrayList<>();
highscores.add(new Highscore("user1", 10));
highscores.add(new Highscore("user2", 0));
highscores.add(new Highscore("user3", -15));
highscores.add(new Highscore("user4", 30));
highscores.add(new Highscore("user5", 5));
// Now, sort the highscores based on their 'score'
3 Réponses :
Vous pouvez utiliser un comparateur ou vous permettre de mettre en œuvre l'interface comparable. Jetez un oeil à: Java: comparable VS Comparateur P>
Êtes-vous vraiment limité à utiliser uniquement la liste imo Par exemple, vous pouvez faire le Suivant: p> maintenant aussi , si vous devez obtenir L'avantage de cette approche: est meilleur Flexibilité et efficacité, car après la forme code> code> est formée que toutes les requêtes vous coûteront code>?
triède code>
est mieux adapté à votre objectif. Vous pouvez utiliser arbreset code> < / a>
Notez que les éléments code> code> sont commandés à l'aide de leur ordre naturel ou par un comparateur fourni au moment de la création définie. En outre, il fournit des coûts de journalisation
LOG (N) GARANTIES CODE> pour les opérations de base (ajouter, supprimer et contient), il est donc possible de calculer assez efficace. P>
Highscores code> contient tous vos objets triés triés ascendant par
score code>. p>
list code> à partir de
highscores code>, alors simplement: p>
O (journal n) code> ou
O (n) code> heure. Et si vous utilisez
list code>, vous serez toujours obligé d'effectuer le tri, qui prendra
O (n journal n) code>. P> p>
Un ensemble n'est pas la structure de données correcte à utiliser pour cela. Les ensembles ne peuvent pas contenir d'éléments en double. Si user1 code> et
user2 code> sont liés avec le même score, un seul d'entre eux apparaîtra dans l'ensemble.
public class CustomComparator implements Comparator<Highscore> { public int compare(HighScore h1, HighScore h2) { return h1.getScore().compareTo(h2.getScore()); } }
Dupliqué possible de Trier ArrayList d'objets personnalisés par propriété
Dupliqué possible de Trier une arrayliste par attribut d'un objet en Java a>
Il a plusieurs solutions à ce problème Stackoverflow.com/a/57871457/4762502