J'ai deux objets chacun avec un id et une liste. Je voudrais avoir un troisième arraylist classant cet objet selon la taille de liste. Et toujours avoir le correaponding id ainsi que la listeComment faire pour trier deux arraylists selon leur taille dans une nouvelle liste
Répondre
Voici l'approche:
Créer une
Comparator
qui permet de comparer deux des « paires id/liste » - dans ce cas, nous comparons la liste tailles du composant de liste .Créez un
ArrayList
de ces "paires id/liste".Utilisez la méthode
Collections.sort
pour trier leArrayList
, conformément auComparator
.
Si je comprends bien, il y a une paire id/list. Voici que je fait:
class IdListPair {
int id;
List<?> list;
IdListPair(int id, List<?> list) {
this.id = id;
this.list = list;
}
public String toString() {
return "id: " + id + "; list: " + list;
}
}
Le IdListPair
fournit un constructeur pour créer la paire id/liste et une méthode toString
qui sera utilisé plus tard pour montrer les résultats du tri.
Ensuite, nous avons une section qui crée une ArrayList
et trie la liste, en utilisant un Comparator
:
List<IdListPair> pairList = new ArrayList<IdListPair>();
pairList.add(new IdListPair(0, Arrays.asList(1, 2, 3)));
pairList.add(new IdListPair(1, Arrays.asList(1)));
pairList.add(new IdListPair(2, Arrays.asList(1, 2)));
System.out.println("Before: " + pairList);
Collections.sort(pairList, new Comparator<IdListPair>() {
public int compare(IdListPair o1, IdListPair o2) {
return o1.list.size() - o2.list.size();
}
public boolean equals(Object o) {
return false;
}
});
System.out.println("After: " + pairList);
Au début, un ArrayList
a été créé avec IdListPair
qui a des listes de longueurs différentes. Ensuite, la méthode Collections.sort
effectue un tri selon les règles fournies par le Comparator
. Une classe implémentant Comparator
doit fournir les méthodes compare
et equals
.
Ici, un Comparator
a été fait il comparera la size
du list
que chaque objet contient IdListPair
dans la méthode compare
. La méthode equals
est une méthode fictive car elle n'est pas utilisée ici.
La plupart des efforts va venir par écrit la méthode compare
correcte, de sorte que le trieur de Collections.sort
peut correctement trier la liste.
Les résultats sont les suivants:
Before: [id: 0; list: [1, 2, 3], id: 1; list: [1], id: 2; list: [1, 2]]
After: [id: 1; list: [1], id: 2; list: [1, 2], id: 0; list: [1, 2, 3]]
- 1. Comment faire deux fonctions dans une liste déroulante
- 2. Trier une liste avec qsort?
- 3. Comment faire deux éléments dans gtk ont la même taille?
- 4. Trier chronologiquement une liste d'avis
- 5. Faire une nouvelle ligne dans un GridView
- 6. Comment trier une liste liée en SQL?
- 7. Comment faire pour trier Hacker News
- 8. Comment puis-je trier selon plusieurs conditions avec différentes commandes?
- 9. Comment trier une liste de chaînes?
- 10. Trier Liste générique sur deux ou plusieurs valeurs
- 11. comment trier un DataGrid flexible selon plusieurs colonnes?
- 12. Comment faire pour commander dynamiquement une liste avec une liste déroulante?
- 13. Nokogiri: Trier Tableau ID selon l'ordre dans le document HTML
- 14. Réduire une ArrayList à une nouvelle taille
- 15. Meilleur endroit pour trier une liste de tâches
- 16. Modèles D: trier une liste des types
- 17. Comment réinitialiser les propriétés svn selon la nouvelle configuration SVN?
- 18. Comment trier un listview par taille de fichier?
- 19. html cadres dimensionnement parent selon la taille de l'enfant
- 20. Python - trier une liste de listes imbriquées
- 21. Comment interroger deux tables selon que l'enregistrement existe ou non dans un tiers?
- 22. Asp.net: Comment trier une liste déroulante ayant des doublons?
- 23. Comment faire pour trier le type de liste générique si plus d'une propriété?
- 24. Comment faire une courbe pour joindre deux objets modifiables?
- 25. concaténer deux champs dans une liste déroulante
- 26. Comment utiliser "Trier par" pour trier sur une propriété d'un type hérité dans LINQ-to-SQL?
- 27. Trier la liste des fichiers dans Xcode?
- 28. Comment faire pour trier NameValueCollection en utilisant une clé en C#?
- 29. Comment faire pour trier les tableaux par produit [compteur] .getProductTitle()?
- 30. Trier une liste de nombres saisis par l'utilisateur dans MIPS