Apabila mengisih koleksi objek menggunakan kaedah Collections.sort dengan berbilang medan, adalah penting untuk memastikan penggabungan medan yang betul untuk perbandingan. Satu isu yang berpotensi dengan kod yang disediakan ialah ketiadaan ruang antara penggabungan medan. Mari kita terokai mengapa ini perlu dan sediakan penyelesaian yang dipertingkatkan.
Kaedah Collections.sort menggunakan Comparator untuk membandingkan dua objek dan menentukan susunan pengisihannya. Walau bagaimanapun, penggabungan medan tanpa ruang boleh mengakibatkan perbandingan yang salah disebabkan ruang berpotensi atau aksara lain dalam medan. Ini boleh mengganggu perbandingan rentetan dan membawa kepada hasil pengisihan yang tidak dijangka.
Untuk menangani isu ini, pertimbangkan kod dipertingkat berikut yang merangkumi ruang antara penggabungan medan:
<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>
Menambah ruang secara berkesan menghasilkan rentetan berasingan untuk setiap medan, memastikan perbandingan yang tepat dan mengekalkan susunan pengisihan yang dimaksudkan.
Sebagai alternatif, pertimbangkan penyelesaian yang menggunakan sintaks Java 8 lambda, seperti:
<code class="java">Collections.sort(reportList, Comparator.comparing(Report::getReportKey) .thenComparing(Report::getStudentNumber) .thenComparing(Report::getSchool));</code>
Pendekatan berasaskan lambda ini juga menawarkan penyelesaian ringkas dan elegan untuk pengisihan berbilang medan.
Ingat, apabila mengisih objek dengan berbilang medan menggunakan Collections.sort, pastikan penggabungan medan yang betul dan elakkan potensi isu yang berpunca daripada meninggalkan ruang. Penyelesaian yang disediakan bertujuan untuk menyediakan fungsi pengisihan yang mantap dan tepat.
Atas ialah kandungan terperinci Mengapakah penting untuk memasukkan ruang semasa menggabungkan medan untuk pengisihan berbilang medan menggunakan Collections.sort?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!