J'ai une classe1 j'ai une liste code> de class1 code> ( list soc code>, pour obtenir le class1 code> avec le plus élevé soc code> premier p> p> p>
4 Réponses :
Utilisez un comparateur
Collections.sort(list, new Comparator<Class1>() {
public int compare(Class1 c1, Class1 c2) {
if (c1.soc > c2.soc) return -1;
if (c1.soc < c2.soc) return 1;
return 0;
}});
Ne fonctionnera pas si un objet de classe1 a SOC = INTEGER.MIN_VALUE par exemple.
Code fixé maintenant. Version précédente (Retour C2.SOC - C1.SOC) Si cela ne fonctionnerait pas, par exemple si C2.SOC est de 2 000 000 000 et C1.SOC est de -1 000 000 000. "Presque toutes les recherches binaires et Mergesorts sont cassées" - googleresearch.blogspot.com/2006/06/...
Merci pour la prise, Aioobe et Julius!
Créer une classe qui implémente comparateur , Créez votre méthode de tri personnalisée, puis transmettez une instance de cette classe dans cette fonction: Collections.sort P>
Exemple: ajoutez des getters and Setters et vous pouvez utiliser this.list.sort (comparator.cacher (CLASS1 :: GETOC)); code>
Voici un exemple complet: Il imprime les éléments suivants: p>
Est-ce que s code>, s1 code>, soc code>, doit vraiment être un accès par défaut au lieu de privé?
S'ils sont privés, ils auraient besoin d'avoir des méthodes d'accesseur pour le comparateur de faire son travail (à moins que la classe1 mise en œuvre comparable et que vous ne spécifiez pas de comparateur)
tandis que la réponse de Scott Stanchfield est généralement le moyen le plus simple de le faire en Java, si vous avez d'autres éléments fonctionnels que vous voudrez peut-être faire avec les propriétés de votre classe, il peut être utile d'utiliser GUAVA 'S fonction s. alors vous pouvez utiliser son Commander classe Pour trier: P> List<Class1> list = ...;
Collections.sort(list, Ordering.natural().reverse().onResultOf(Class1.GET_SOC));
Avez-vous des stipulations? Doit-il être une méthode récursive ou quelque chose d'efficacité à haute efficacité (par exemple Quicksort)? Ou cherchez-vous une implémentation simple / simple? Vous pouvez finalement utiliser une boucle (), cependant, il serait très difficile pour l'ordinateur de le faire si vous avez une liste de 100 000 articles.
Dupliqué possible de Triez une liste du plus haut au plus bas
Pas un DUP ... S'il lui a demandé, il aurait changé sa question initiale dans une autre.