Lors du tri de collections d'objets à l'aide de la méthode Collections.sort avec plusieurs champs, il est crucial de garantir une concaténation appropriée des champs pour comparaison. Un problème potentiel avec le code fourni est l'absence d'espaces entre les concaténations de champs. Explorons pourquoi cela est nécessaire et proposons une solution améliorée.
La méthode Collections.sort utilise un Comparator pour comparer deux objets et déterminer leur ordre de tri. Cependant, la concaténation de champs sans espaces peut entraîner des comparaisons incorrectes en raison d'espaces potentiels ou d'autres caractères dans les champs. Cela peut interférer avec la comparaison des chaînes et conduire à des résultats de tri inattendus.
Pour résoudre ce problème, considérez le code amélioré suivant qui inclut des espaces entre les concaténations de champs :
<code class="java">Collections.sort(reportList, new Comparator<Report>() { @Override public int compare(final Report record1, final Report record2) { return (record1.getReportKey() + " " + record1.getStudentNumber() + " " + record1.getSchool()) .compareTo(record2.getReportKey() + " " + record2.getStudentNumber() + " " + record2.getSchool()); } });</code>
L'ajout d'espaces crée efficacement des chaînes distinctes pour chaque champ, garantissant des comparaisons précises et conservant l'ordre de tri prévu.
Vous pouvez également envisager des solutions qui utilisent la syntaxe lambda Java 8, telles que :
<code class="java">Collections.sort(reportList, Comparator.comparing(Report::getReportKey) .thenComparing(Report::getStudentNumber) .thenComparing(Report::getSchool));</code>
Cette approche basée sur lambda offre également une solution concise et élégante pour le tri multi-champs.
N'oubliez pas que lorsque vous triez des objets avec plusieurs champs à l'aide de Collections.sort, assurez-vous d'une concaténation appropriée des champs et évitez les potentiels problèmes résultant de l’omission d’espaces. Les solutions proposées visent à fournir une fonctionnalité de tri robuste et précise.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!