1. Gambaran keseluruhan
Dalam tutorial ini, kita akan melihat pelbagai cara untuk memeriksa apakah array disusun.
Sebelum memulakan, bagaimanapun, akan menarik untuk memeriksa bagaimana menyusun susunan di Java.
2. Dengan Gelung
Salah satu cara untuk memeriksa adalah dengan gelung untuk . Kita dapat mengulangi semua nilai array satu persatu.
Mari lihat bagaimana melakukannya.
2.1. Array Primitif
Ringkasnya, kami akan melakukan iterasi pada semua posisi tetapi yang terakhir. Ini kerana kita akan membandingkan satu kedudukan dengan yang berikutnya.
Sekiranya sebilangan daripadanya tidak disusun, kaedah akan kembali salah. Sekiranya tidak ada perbandingan yang salah, ini bermaksud bahawa array disusun:
boolean isSorted(int[] array) { for (int i = 0; i array[i + 1]) return false; } return true; }
2.2. Objek Yang Melaksanakan Sebanding
Kita boleh melakukan sesuatu yang serupa dengan objek yang melaksanakan Sebanding. Daripada menggunakan tanda lebih besar daripada, kami akan menggunakan membandingkanTo :
boolean isSorted(Comparable[] array) { for (int i = 0; i 0) return false; } return true; }
2.3. Objek yang Tidak Melaksanakan Sebanding
Tetapi, bagaimana jika objek kita tidak melaksanakan Sebanding ? Dalam kes ini, kita boleh membuat Comparator.
Dalam contoh ini, kita akan menggunakan objek Pekerja . Ini POJO ringkas dengan tiga bidang:
public class Employee implements Serializable { private int id; private String name; private int age; // getters and setters }
Kemudian, kita perlu memilih bidang mana yang ingin kita pesan. Di sini, mari pesan mengikut bidang umur :
Comparator byAge = Comparator.comparingInt(Employee::getAge);
Dan kemudian, kita boleh mengubah kaedah kita untuk mengambil Perbandingan :
boolean isSorted(Object[] array, Comparator comparator) { for (int i = 0; i 0) return false; } return true; }
3. Secara berulang
Kita tentu saja boleh menggunakan rekursi. Ideanya di sini adalah kita akan memeriksa dua kedudukan dalam array dan kemudian berulang sehingga kita memeriksa setiap kedudukan.
3.1. Array Primitif
Dalam kaedah ini, kami memeriksa dua kedudukan terakhir. Sekiranya ia disusun, kami akan memanggil kaedah itu lagi tetapi dengan kedudukan sebelumnya. Sekiranya salah satu daripada kedudukan ini tidak disusun, kaedahnya akan kembali salah:
boolean isSorted(int[] array, int length) length array[length - 1]) return false; return isSorted(array, length - 1);
3.2. Objek Yang Melaksanakan Sebanding
Sekarang, mari kita lihat lagi sebagai objek yang melaksanakan Sebanding. Kami akan melihat bahawa pendekatan yang sama dengan membandingkanTo akan berfungsi:
boolean isSorted(Comparable[] array, int length)
3.3. Objek yang Tidak Melaksanakan Sebanding
Akhir-akhir ini, mari kita cuba objek Karyawan kita lagi, menambahkan parameter Perbandingan :
boolean isSorted(Object[] array, Comparator comparator, int length) if (array == null
4. Kesimpulan
Dalam tutorial ini, kami telah melihat bagaimana untuk memeriksa apakah array disusun atau tidak. Kami melihat penyelesaian berulang dan berulang.
Cadangan kami adalah menggunakan penyelesaian gelung. Ia lebih bersih dan senang dibaca.
Seperti biasa, kod sumber dari tutorial ini boleh didapati di GitHub.