[JAVA] Comment trier une liste de SelectItems

Liste des SelectItems souvent utilisés pour définir des choix. Vous souhaiterez peut-être trier en utilisant les valeurs obtenues à partir de la base de données. Pour un tel cas.

--Environnement - CentOS Linux release 7.8.2003 (Core) - openjdk version "11.0.7" 2020-04-14 LTS - JSF 2.3.9

Par exemple, lorsqu'il existe une liste de SelectItem comme celle-ci

value label
1 Inu
3 Saru
0 Ours
2 Chat
/**Liste des SelectItems. */
@Getter
private List<SelectItem> items;

/**Définir une liste de SelectItems. */
private void setItems() {
    this.items = new ArrayList<SelectItem>();
    this.items.add(new SelectItem(1, "Inu"));
    this.items.add(new SelectItem(0, "Ours"));
    this.items.add(new SelectItem(3, "Saru"));
    this.items.add(new SelectItem(2, "Chat"));
}

Trier par ordre croissant de valeur

Référence: [Collections (Java Platform SE 8)](https://docs.oracle.com/javase/jp/8/docs/api/java/util/Collections.html#sort-java.util.List-java. util.Comparator-)

value label
0 Ours
1 Inu
2 Chat
3 Saru
Collections.sort(this.items, new Comparator<SelectItem>() {
    @Override
    public int compare(SelectItem item1, SelectItem item2) {
        if (item1 != null && item2 != null) {
            if (item1.getValue() != null && item2.getValue() != null) {
                return item1.getValue().toString().compareTo(item2.getValue().toString());
            }
        }
        return 0;
    }
});

(Bonus) Obtenez la valeur minimale de la valeur

SelectItem minItem = Collections.min(this.items, new Comparator<SelectItem>() {
    //Le contenu est le même que le tri
});
var min = Integer.valueOf(minItem.getValue().toString());

Trier par valeur décroissante

Référence: Comparator (Java Platform SE 8)

value label
3 Saru
2 Chat
1 Inu
0 Ours
//Je viens d'inverser item1 et item2 dans le retour croissant
Collections.sort(this.items, new Comparator<SelectItem>() {
    @Override
    public int compare(SelectItem item1, SelectItem item2) {
        if (item1 != null && item2 != null) {
            if (item1.getValue() != null && item2.getValue() != null) {
                return item2.getValue().toString().compareTo(item1.getValue().toString());
            }
        }
        return 0;
    }
});

Trier par ordre croissant d'étiquette

Référence: Trier une liste de hiragana et alphabets - Qiita

value label
1 Inu
0 Ours
3 Saru
2 Chat

Comparator.Comment utiliser la comparaison


this.items = this.items.stream().sorted(Comparator.comparing(SelectItem::getLabel)).collect(Collectors.toList());

Collator.Comment utiliser getInstance


Collections.sort(this.items, new Comparator<SelectItem>() {
    @Override
    public int compare(SelectItem item1, SelectItem item2) {
        if (item1 != null && item2 != null) {
            if (item1.getLabel() != null && item2.getLabel() != null) {
                return Collator.getInstance(Locale.JAPANESE).compare(item1.getLabel(), item2.getLabel());
            }
        }
        return 0;
    }
});

Trier par ordre décroissant de libellé

value label
2 Chat
3 Saru
0 Ours
1 Inu

Comparator.Comment utiliser la comparaison


// reversed()Par ordre décroissant
this.items = this.items.stream().sorted(Comparator.comparing(SelectItem::getLabel).reversed()).collect(Collectors.toList());

Collator.Comment utiliser getInstance


//Je viens d'inverser item1 et item2 dans le retour croissant
Collections.sort(this.items, new Comparator<SelectItem>() {
    @Override
    public int compare(SelectItem item1, SelectItem item2) {
        if (item1 != null && item2 != null) {
            if (item1.getLabel() != null && item2.getLabel() != null) {
                return Collator.getInstance(Locale.JAPANESE).compare(item2.getLabel(), item1.getLabel());
            }
        }
        return 0;
    }
});

Échec du tri

J'ai trouvé une chose utile appelée Comparator, alors j'ai essayé de l'utiliser immédiatement et j'ai échoué. Une erreur de compilation se produit autour de Comparator.comparing (SelectItem :: getValue). La valeur de SelectItem étant Object, ne peut-il pas être utilisé comme clé de tri?

this.items = this.items.stream().sorted(Comparator.comparing(SelectItem::getValue)).collect(Collectors.toList());

Recommended Posts

Comment trier une liste de SelectItems
Comment supprimer / mettre à jour le champ de liste de OneToMany
[Rails] Comment afficher une liste de messages par catégorie
Comment trier une liste à l'aide du comparateur
Comment déterminer le nombre de parallèles
Personnalisez la répartition du contenu de Recyclerview
Comment obtenir le jour d'aujourd'hui
Sortie de la façon d'utiliser la méthode slice
Comment afficher le résultat du remplissage du formulaire
[Java] Comment obtenir l'URL de la source de transition
Comment écrire Scala du point de vue de Java
[Java] Comment obtenir la valeur maximale de HashMap
[Android] Comment obtenir la langue de réglage du terminal
[Rails] Comment obtenir le contenu des paramètres forts
Comment juger le clic de n'importe quelle zone de l'image
Java: utilisez Stream pour trier le contenu d'une collection
Comment télécharger une ancienne version d'Apache Tomcat
[Swift] Comment obtenir l'ID de document Firebase
Comment afficher le champ de sélection de time_select toutes les 30 minutes
Comment connecter les chaînes de la liste séparées par des virgules
Comment obtenir les informations les plus longues de Twitter à partir du 12/12/2016
Comment modifier la valeur de réglage de Springboot Hikari CP
[Ruby] Comment récupérer le contenu du double hachage
Comment ajouter des éléments sans spécifier la longueur du tableau
Comment résoudre les problèmes causés par les trois files d'attente de blocage de Java
Comment se moquer de certaines méthodes de la classe testée
Comment dériver le dernier jour du mois en Java
Comment modifier le contenu du fichier jar sans décompresser
Comment vérifier l'extension et la taille des fichiers téléchargés
[jsoup] Comment obtenir la totalité de la documentation
Comment utiliser la méthode link_to
[Java] Supprimer les éléments de la liste
Comment utiliser la méthode include?
Comment utiliser la méthode form_with
Comment trouver l'angle moyen
Trier la liste des objets Java
Comment utiliser setDefaultCloseOperation () de JFrame
[Java] Comment utiliser List [ArrayList]
Comment ajouter la fonction de suppression
[Rails] Comment obtenir l'URL de la source de transition et la rediriger
Comment définir l'adresse IP et le nom d'hôte de CentOS8
Comment afficher 0 sur le côté gauche de la valeur d'entrée standard
[Rails / Heroku / MySQL] Comment réinitialiser la base de données de l'application Rails sur Heroku
Comment obtenir le contenu de la carte à l'aide du mémorandum d'instructions
[Rails] Comment omettre l'affichage de la chaîne de caractères de la méthode link_to
[Rails] Comment changer le titre de la page du navigateur pour chaque page
Comment obtenir l'identifiant de la clé PRIMAY incrémentée automatiquement dans MyBatis
Comment afficher une liste de chaînes dans JSF sous forme de chaînes séparées par des virgules
[chown] Comment changer le propriétaire d'un fichier ou d'un répertoire
Comment vérifier le contenu de la chaîne de caractères java de longueur fixe
Comment obtenir la longueur d'un fichier audio avec Java