Memeriksa Jika Daftar Diurutkan di Jawa

1. Ikhtisar

Dalam tutorial ini, kita akan melihat berbagai cara untuk memeriksa apakah daftar diurutkan di Java .

2. Pendekatan Iteratif

Pendekatan berulang adalah cara sederhana dan intuitif untuk memeriksa daftar yang diurutkan. Dalam pendekatan ini, kita akan mengulang daftar dan membandingkan elemen yang berdekatan. Jika salah satu dari dua elemen yang berdekatan tidak diurutkan, kita dapat mengatakan bahwa daftar tersebut tidak diurutkan.

Daftar dapat diurutkan dalam urutan alami atau dalam urutan kustom. Kami akan membahas kedua kasus ini menggunakan antarmuka Comparable dan Comparator .

2.1. Menggunakan Comparable

Pertama, mari kita lihat contoh daftar yang elemennya bertipe Comparable . Di sini, kami akan mempertimbangkan daftar yang berisi objek bertipe 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 Comparator

Sekarang, mari pertimbangkan kelas Karyawan , yang tidak mengimplementasikan Comparable . Jadi, dalam kasus ini, kita perlu menggunakan Comparator untuk membandingkan elemen yang berdekatan dari daftar:

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; }

Kedua contoh di atas serupa. Satu-satunya perbedaan adalah cara kami membandingkan elemen daftar sebelumnya dan saat ini.

Selain itu, kami juga dapat menggunakan Pembanding untuk memiliki kontrol yang tepat atas pemeriksaan penyortiran . Informasi lebih lanjut tentang keduanya tersedia di tutorial Comparator dan Comparable in Java kami.

3. Pendekatan Rekursif

Sekarang, kita akan melihat cara memeriksa daftar yang diurutkan 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 Biji

Seringkali lebih baik menggunakan pustaka pihak ketiga daripada menulis logika kita sendiri. Pustaka Guava memiliki beberapa kelas utilitas yang dapat kita gunakan untuk memeriksa apakah daftar diurutkan.

4.1. Kelas Pemesanan Jambu Biji

Di bagian ini, kita akan melihat bagaimana menggunakan class Ordering di Guava untuk memeriksa daftar yang diurutkan.

Pertama, kita akan melihat contoh daftar yang berisi elemen bertipe Comparable :

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

Selanjutnya, kita akan melihat bagaimana kita dapat memeriksa apakah daftar objek Employee diurutkan menggunakan Comparator :

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

Juga, kita bisa menggunakan natural (). ReverseOrder () untuk memeriksa apakah daftar diurutkan dalam urutan terbalik. Selain itu, kita bisa menggunakan natural (). NullFirst () dan natural () . nullLast () untuk memeriksa apakah null muncul di urutan pertama atau terakhir dari daftar yang diurutkan.

Untuk mengetahui lebih lanjut tentang kelas Pemesanan Jambu Biji , kita dapat merujuk ke artikel Panduan Pemesanan Jambu Biji kami.

4.2. Kelas Pembanding Jambu Biji

Jika kita menggunakan Java 8 atau lebih, Guava memberikan alternatif yang lebih baik dalam hal kelas Pembanding . Kita akan melihat contoh penggunaan metode isInOrder dari kelas ini:

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

Seperti yang bisa kita lihat, pada contoh di atas, kita telah menggunakan pengurutan alami untuk memeriksa daftar yang diurutkan. Kami juga dapat menggunakan Pembanding untuk menyesuaikan pemeriksaan penyortiran.

5. Kesimpulan

Dalam artikel ini, kita telah melihat bagaimana kita dapat memeriksa daftar yang diurutkan menggunakan pendekatan berulang sederhana, pendekatan rekursif, dan menggunakan Guava. Kami juga telah menyentuh secara singkat penggunaan Comparator dan Comparable dalam memutuskan logika pemeriksaan pengurutan.

Penerapan semua contoh dan cuplikan kode ini dapat ditemukan di GitHub.