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"));
}
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;
}
});
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());
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;
}
});
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;
}
});
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;
}
});
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