Arrays.sort ja lajittelu
Lajittele primitiivi- ja oliotaulukot
Arrays.sort ja lajittelu on ilmainen Java Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Java Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Java Academy-kurssilla on yhteensä 4 oppituntia.
Miksi apuluokka
Javan taulukot ovat olioita, mutta niillä on hyvin vähän valmiita metodeja. java.util.Arrays-luokka täydentää tätä puutetta tarjoamalla static-apumetodeja taulukoiden lajitteluun, hakemiseen, vertailuun, kopiointiin ja tulostamiseen.
- Tuokaa luokka käyttöön komennolla
import java.util.Arrays; - Jokainen metodi on
static, joten kutsutte niitä suoraan luokasta:Arrays.sort(...)
Primitiivitaulukon lajittelu
Arrays.sort(int[]) lajittelee taulukon paikallaan käyttäen nopeaa kaksoisakselista pikalajittelua. Palautusarvoa ei ole, vaan alkuperäinen taulukko järjestetään uudelleen.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = {5, 2, 8, 1, 9, 3};
Arrays.sort(nums);
System.out.println(Arrays.toString(nums));
}
}Muiden primitiivityyppien lajittelu
Ylikuormitetut versiot ovat saatavilla kaikille primitiivityypeille, kuten double[]-, long[]- ja char[]-taulukoille. Kaikki lajittelevat arvot nousevaan järjestykseen.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
double[] prices = {3.5, 1.2, 9.9, 0.5};
Arrays.sort(prices);
System.out.println(Arrays.toString(prices));
}
}Arvoalueen lajittelu
Voitte lajitella vain osan taulukosta komennolla Arrays.sort(array, fromIndex, toIndex). Arvoalue sisältää fromIndex-arvon, mutta ei toIndex-arvoa.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = {5, 2, 8, 1, 9, 3};
Arrays.sort(nums, 1, 4);
System.out.println(Arrays.toString(nums));
}
}Oliotaulukoiden lajittelu
Oliotaulukoissa, kuten String[]-taulukoissa, Arrays.sort käyttää alkioiden luonnollista järjestystä eli niiden Comparable-toteutusta. Merkkijonot lajitellaan leksikografiseen järjestykseen.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String[] names = {"Charlie", "Alice", "Bob"};
Arrays.sort(names);
System.out.println(Arrays.toString(names));
}
}Lajittelu Comparatorilla
Ohittaaksenne luonnollisen järjestyksen välittäkää Comparator. Comparator.reverseOrder() lajittelee laskevaan järjestykseen. Tämä toimii vain oliotaulukoilla, ei primitiivitaulukoilla.
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
String[] names = {"Charlie", "Alice", "Bob"};
Arrays.sort(names, Comparator.reverseOrder());
System.out.println(Arrays.toString(names));
}
}Comparator pituuden perusteella
Comparator voi vertailla mitä tahansa ominaisuutta. Comparator.comparingInt(String::length) lajittelee merkkijonot lyhimmästä pisimpään.
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
String[] words = {"banana", "fig", "apple"};
Arrays.sort(words, Comparator.comparingInt(String::length));
System.out.println(Arrays.toString(words));
}
}Stabiilius
Oliotaulukoiden lajittelu on stabiilia: samanarvoiset alkiot säilyttävät alkuperäisen keskinäisen järjestyksensä. Primitiivien stabiiliutta ei taata, mutta primitiiveillä samanarvoiset alkiot ovat erottamattomia, joten sillä ei ole merkitystä.
Rinnakkaislajittelu
Hyvin suurilla taulukoilla Arrays.parallelSort jakaa työn useille suorittimen ytimille. Ohjelmointirajapinta on sama kuin sort-metodilla ja tulos on sama, mutta suurilla aineistoilla suoritus on nopeampi.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = {7, 3, 9, 1, 5, 2, 8, 4};
Arrays.parallelSort(nums);
System.out.println(Arrays.toString(nums));
}
}Yleinen sudenkuoppa
Arrays.sort palauttaa arvon void. Rivi int[] sorted = Arrays.sort(nums); ei käänny. Lajitelkaa ensin ja käyttäkää sitten samaa muuttujaa.
Lajittelu ja tulostaminen
Tyypillinen toimintatapa on lajitella taulukko paikallaan ja tulostaa se sitten Arrays.toString-metodilla tuloksen tarkistamiseksi.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] scores = {88, 72, 95, 60, 81};
Arrays.sort(scores);
System.out.println("Lowest: " + scores[0]);
System.out.println("Highest: " + scores[scores.length - 1]);
System.out.println(Arrays.toString(scores));
}
}Pikatarkistus
Testatkaa lajittelua koskeva ymmärryksenne.
Kertaus
Opitte lajittelemaan taulukoita Arrays-apuluokan avulla.
Arrays.sort(arr)lajittelee primitiivit tai oliot paikallaan nousevaan järjestykseen.- Arvoalueen ylikuormitettu versio
sort(arr, from, to)lajittelee osan taulukosta. - Oliotaulukoissa voidaan käyttää
Comparator-vertailijaa mukautettuun järjestykseen. parallelSortnopeuttaa suurten taulukoiden lajittelua.
Opi Java tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 104
- Oppitunnit
- 374
Usein kysytyt kysymykset
Onko oppitunti ”Arrays.sort ja lajittelu” ilmainen?
Kyllä – oppitunnin ”Arrays.sort ja lajittelu” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Java Academy-kurssin, päivitä CoddyKit PROhon. Java Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Arrays.sort ja lajittelu”?
Lajittele primitiivi- ja oliotaulukot Harjoittelet Java Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Java Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Java Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”Arrays.sort ja lajittelu”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Java Academy-oppitunnilla?
Kyllä. Jokainen Java Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Arrays.sort ja lajittelu
- Arrays.binarySearch
- Arrays.fill ja copyOf
- Arrays.equals ja toString