Provjeravanje sortiranja popisa na Javi

1. Pregled

U ovom uputstvu ćemo vidjeti različiti načini provjere je li popis sortiran na Javi.

2. Iterativni pristup

Iterativni pristup jednostavan je i intuitivan način provjere razvrstanog popisa. U ovom ćemo pristupu ponoviti popis i usporediti susjedne elemente. Ako bilo koji od dva susjedna elementa nije sortiran, možemo reći da popis nije sortiran.

Popis se može razvrstati prirodnim redoslijedom ili prilagođenim redoslijedom. Oba ćemo slučaja pokriti Usporedive i Usporednik sučelja.

2.1. Koristeći Usporedive

Prvo, da vidimo primjer popisa čiji su elementi tipa Usporedive. Ovdje ćemo razmotriti popis koji sadrži objekte tipa Niz:

javna statička logička vrijednost isSorted (List listOfStrings) {if (isEmpty (listOfStrings) || listOfStrings.size () == 1) {return true; } Iterator iter = listOfStrings.iterator (); Struja niza, prethodna = iter.next (); while (iter.hasNext ()) {current = iter.next (); if (previous.compareTo (current)> 0) {return false; } prethodni = trenutni; } return true; }

2.2. Koristeći Usporednik

Sada, razmotrimo Zaposlenik klase, koja ne provodi Usporedive. Dakle, u ovom slučaju trebamo koristiti a Usporednik za usporedbu susjednih elemenata popisa:

javna statička logička vrijednost isSorted (Popis zaposlenika, Komparator zaposlenikaComparator) {if (isEmpty (zaposlenici) || zaposlenici.size () == 1) {return true; } Iterator iter = zaposlenici.iterator (); Trenutni zaposlenik, prethodno = iter.next (); while (iter.hasNext ()) {current = iter.next (); if (workerComparator.compare (prethodno, trenutno)> 0) {return false; } prethodni = trenutni; } return true; }

Gornja dva primjera su slična. Razlika je samo u tome kako uspoređujemo prethodne i trenutne elemente popisa.

U Dodatku, također možemo koristiti Usporednik kako bi imali preciznu kontrolu nad provjerom sortiranja. Daljnje informacije o ovo dvoje dostupne su u našem vodiču za Comparator i Comparable u Javi.

3. Rekurzivni pristup

Sada ćemo vidjeti kako provjeriti razvrstani popis pomoću rekurzije:

javna statička logička vrijednost isSorted (List listOfStrings) {return isSorted (listOfStrings, listOfStrings.size ()); } javni statički logički isSorted (List listOfStrings, int index) {if (indeks 0) {return false; } else {return isSorted (listOfStrings, indeks - 1); }}

4. Korištenje Guave

Često je dobro koristiti knjižnicu treće strane umjesto da pišemo vlastitu logiku. Knjižnica Guava ima neke klase korisnih programa pomoću kojih možemo provjeriti je li popis sortiran.

4.1. Guava Naručivanje Razred

U ovom ćemo odjeljku vidjeti kako se koristi Naručivanje razreda u Guavi da provjeri razvrstan popis.

Prvo ćemo vidjeti primjer popisa koji sadrži elemente tipa Usporedive:

javna statička logička vrijednost isSorted (List listOfStrings) {return Poredak. natural (). isOrdered (listOfStrings); }

Dalje, vidjet ćemo kako možemo provjeriti postoji li popis Zaposlenik objekti se sortiraju pomoću a Usporednik:

javna statička logička vrijednost isSorted (Popis zaposlenika, Komparator workerComparator) {return Ordering.from (workerComparator) .isOrdered (zaposlenici); }

Također, možemo koristiti natural (). reverseOrder () kako bi provjerili je li popis sortiran obrnutim redoslijedom. Osim toga, možemo koristiti prirodno (). nullFirst () i prirodno ().nullLast () provjeriti je li null pojavljuje se na prvom ili posljednjem razvrstanom popisu.

Da biste saznali više o Guavi Naručivanje klase, naš vodič možemo uputiti na članak o naručivanju tvrtke Guava.

4.2. Guava Usporednici Razred

Ako koristimo Javu 8 ili noviju, Guava nudi bolju alternativu u smislu Usporednici razred. Vidjet ćemo primjer koristiti isInOrder metoda ove klase:

javna statička logička vrijednost isSorted (List listOfStrings) {return Comparators.isInOrder (listOfStrings, Comparator. naturalOrder ()); }

Kao što vidimo, u gornjem primjeru koristili smo prirodni poredak kako bismo provjerili razvrstani popis. Također možemo koristiti i Usporednik za prilagodbu provjere sortiranja.

5. Zaključak

U ovom smo članku vidjeli kako možemo provjeriti razvrstani popis pomoću jednostavnog iterativnog pristupa, rekurzivnog pristupa i pomoću Guave. Također smo se ukratko dotakli upotrebe Usporednik i Usporedive u odluci logike provjere sortiranja.

Provedbu svih ovih primjera i isječaka koda možete pronaći na GitHubu.


$config[zx-auto] not found$config[zx-overlay] not found