Java Academy · Oppitunti

Arrays.sort ja lajittelu

Lajittele primitiivi- ja oliotaulukot

Oppitunti 1/413 vaihetta

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.
  • parallelSort nopeuttaa suurten taulukoiden lajittelua.
Aloita maksutta

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

  1. Arrays.sort ja lajittelu
  2. Arrays.binarySearch
  3. Arrays.fill ja copyOf
  4. Arrays.equals ja toString
← Takaisin: Java Academy