Memeriksa Adakah Senarai Diurutkan di Jawa

1. Gambaran keseluruhan

Dalam tutorial ini, kita akan melihat pelbagai cara untuk memeriksa apakah senarai disusun di Java .

2. Pendekatan berulang

Pendekatan berulang adalah cara mudah dan intuitif untuk memeriksa senarai yang disusun. Dalam pendekatan ini, kami akan mengulangi senarai dan membandingkan elemen yang berdekatan. Sekiranya salah satu daripada dua elemen bersebelahan tidak disusun, kita boleh mengatakan bahawa senarai itu tidak disusun.

Senarai boleh disusun mengikut urutan semula jadi atau mengikut pesanan tersuai. Kami akan meliputi kedua-dua kes yang menggunakan Setanding dan Comparator muka.

2.1. Menggunakan Berbanding

Pertama, mari kita lihat contoh senarai yang elemennya boleh dibandingkan . Di sini, kita akan mempertimbangkan senarai yang mengandungi objek jenis String :

public static boolean isSorted(List listOfStrings) { if (isEmpty(listOfStrings) || listOfStrings.size() == 1) { return true; } Iterator iter = listOfStrings.iterator(); String current, previous = iter.next(); while (iter.hasNext()) { current = iter.next(); if (previous.compareTo(current) > 0) { return false; } previous = current; } return true; }

2.2. Menggunakan Perbandingan

Sekarang, mari kita pertimbangkan kelas Pekerja , yang tidak melaksanakan Sebanding . Oleh itu, dalam kes ini, kita perlu menggunakan Perbandingan untuk membandingkan unsur-unsur yang berdekatan:

public static boolean isSorted(List employees, Comparator employeeComparator) { if (isEmpty(employees) || employees.size() == 1) { return true; } Iterator iter = employees.iterator(); Employee current, previous = iter.next(); while (iter.hasNext()) { current = iter.next(); if (employeeComparator.compare(previous, current) > 0) { return false; } previous = current; } return true; }

Dua contoh di atas adalah serupa. Satu-satunya perbezaan adalah bagaimana kita membandingkan elemen-elemen senarai sebelumnya dan semasa.

Selain itu, kita juga dapat menggunakan Comparator untuk memiliki kawalan yang tepat terhadap pemeriksaan penyortiran . Maklumat lebih lanjut mengenai kedua-duanya terdapat dalam tutorial Comparator dan Comparable in Java kami.

3. Pendekatan berulang

Sekarang, kita akan melihat cara memeriksa senarai yang disusun menggunakan rekursi:

public static boolean isSorted(List listOfStrings) { return isSorted(listOfStrings, listOfStrings.size()); } public static boolean isSorted(List listOfStrings, int index) { if (index  0) { return false; } else { return isSorted(listOfStrings, index - 1); } }

4. Menggunakan Jambu Batu

Selalunya bagus untuk menggunakan perpustakaan pihak ketiga daripada menulis logik kita sendiri. Perpustakaan Jambu mempunyai beberapa kelas utiliti yang dapat kita gunakan untuk memeriksa apakah senarai disusun.

4.1. Kelas Pemesanan Jambu Batu

Di bahagian ini, kita akan melihat cara menggunakan kelas Pemesanan di Jambu untuk memeriksa senarai yang disusun.

Mula-mula, kita akan melihat contoh senarai yang mengandungi unsur jenis yang boleh dibandingkan :

public static boolean isSorted(List listOfStrings) { return Ordering. natural().isOrdered(listOfStrings); }

Seterusnya, kita akan melihat bagaimana kita dapat memeriksa apakah senarai objek Pekerja disusun menggunakan Comparator :

public static boolean isSorted(List employees, Comparator employeeComparator) { return Ordering.from(employeeComparator).isOrdered(employees); }

Juga, kita dapat menggunakan semula (). ReverseOrder () untuk memeriksa apakah senarai disusun dalam urutan terbalik. Di samping itu, kita boleh menggunakan semula jadi (). NullFirst () dan semula jadi () . nullLast () untuk memeriksa sama ada null muncul pada senarai pertama atau terakhir dari senarai yang disusun.

Untuk mengetahui lebih lanjut mengenai kelas Pemesanan Jambu Batu , kami dapat merujuk artikel Panduan Pemesanan Jambu Batu.

4.2. Kelas Pembanding Jambu Batu

Sekiranya kita menggunakan Java 8 atau lebih tinggi, Jambu Batu memberikan alternatif yang lebih baik dari segi kelas Perbandingan . Kita akan melihat contoh penggunaan kaedah isInOrder dari kelas ini:

public static boolean isSorted(List listOfStrings) { return Comparators.isInOrder(listOfStrings, Comparator. naturalOrder()); }

Seperti yang dapat kita lihat, dalam contoh di atas, kita telah menggunakan pesanan semula jadi untuk memeriksa senarai yang disusun. Kami juga dapat menggunakan Comparator untuk menyesuaikan pemeriksaan penyortiran.

5. Kesimpulan

Dalam artikel ini, kita telah melihat bagaimana kita dapat memeriksa senarai yang disusun menggunakan pendekatan iteratif sederhana, pendekatan rekursif, dan menggunakan Jambu Batu. Kami juga secara ringkas menyentuh penggunaan Comparator dan Comparable dalam menentukan logik pemeriksaan penyortiran.

Pelaksanaan semua contoh dan coretan kod ini boleh didapati di GitHub.