Java Academy · Oppitunti

Arrays.fill ja copyOf

Täytä ja muuta taulukoiden kokoa

Oppitunti 3/413 vaihetta

Arrays.fill ja copyOf on ilmainen Java Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/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.

Taulukoiden täyttäminen

Arrays.fill asettaa jokaisen taulukon alkion samaksi arvoksi. Se muuttaa taulukkoa paikallaan ja on kätevä tietojen alustamiseen tai palauttamiseen alkutilaan.

Perustäyttö

Täyttäkää koko taulukko yhdellä arvolla.

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] nums = new int[5];
        Arrays.fill(nums, 7);
        System.out.println(Arrays.toString(nums));
    }
}

Arvoalueen täyttäminen

Arrays.fill(array, from, to, value) täyttää vain osan taulukosta. Arvoalue sisältää from-arvon, mutta ei to-arvoa.

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] nums = new int[6];
        Arrays.fill(nums, 2, 5, 9);
        System.out.println(Arrays.toString(nums));
    }
}

Oliotaulukoiden täyttäminen

Fill toimii myös oliotaulukoilla. Huomioikaa, että jokaiseen paikkaan tulee viittaus samaan olioon, kun täytätte taulukon oliolla.

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String[] grid = new String[4];
        Arrays.fill(grid, "empty");
        System.out.println(Arrays.toString(grid));
    }
}

Koon muuttaminen copyOf-menetelmällä

Taulukoiden pituus on kiinteä. Jos haluatte suuremman tai pienemmän taulukon, Arrays.copyOf(array, newLength) palauttaa pyydetyn kokoisen uuden taulukon.

Taulukon kasvattaminen

Kun uusi pituus on suurempi, ylimääräiset paikat saavat oletusarvon: 0 numeerisille tyypeille, false boolean-tyypille ja null olioille.

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] nums = {1, 2, 3};
        int[] bigger = Arrays.copyOf(nums, 5);
        System.out.println(Arrays.toString(bigger));
    }
}

Taulukon pienentäminen

Kun uusi pituus on pienempi, taulukko katkaistaan ja lopussa olevat alkiot poistetaan.

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] nums = {1, 2, 3, 4, 5};
        int[] smaller = Arrays.copyOf(nums, 3);
        System.out.println(Arrays.toString(smaller));
    }
}

Alueen kopioiminen

Arrays.copyOfRange(array, from, to) kopioi osan uuteen taulukkoon. Jälleen from kuuluu mukaan ja to ei kuulu mukaan.

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] nums = {10, 20, 30, 40, 50};
        int[] middle = Arrays.copyOfRange(nums, 1, 4);
        System.out.println(Arrays.toString(middle));
    }
}

copyOf ei muuta alkuperäistä

Toisin kuin fill, copyOf jättää alkuperäisen taulukon ennalleen ja palauttaa kokonaan uuden taulukon. Alkuperäinen ja kopio ovat toisistaan riippumattomia.

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] original = {1, 2, 3};
        int[] copy = Arrays.copyOf(original, 3);
        copy[0] = 99;
        System.out.println("Original: " + Arrays.toString(original));
        System.out.println("Copy:     " + Arrays.toString(copy));
    }
}

Manuaalinen koon muuttaminen

Ennen ArrayList-luokkaa ohjelmissa taulukoita kasvatettiin kopioimalla niiden sisältö suurempaan taulukkoon. copyOf kaksinkertaistaa kapasiteetin yhdellä kutsulla.

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] data = {1, 2, 3, 4};
        data = Arrays.copyOf(data, data.length * 2);
        data[4] = 5;
        System.out.println(Arrays.toString(data));
    }
}

fill vs copyOf

Muistakaa ero: fill korvaa olemassa olevat alkiot paikallaan ja palauttaa void-arvon; copyOf luo kooltaan muutetun kopion ja palauttaa sen. Valitkaa menetelmä sen mukaan, tarvitsetteko uuden pituuden.

Pikatarkistus

Testatkaa, miten hyvin ymmärrätte fill- ja copyOf-menetelmät.

Kertaus

Opitte täyttämään taulukoita ja muuttamaan niiden kokoa.

  • Arrays.fill asettaa kaikki alkiot tai tietyn alueen alkiot yhteen arvoon paikallaan.
  • Arrays.copyOf palauttaa tietyn pituuden uuden taulukon ja täyttää puuttuvat alkiot tai katkaisee taulukon tarvittaessa.
  • Arrays.copyOfRange kopioi osan taulukosta.
  • copyOf ei tuhoa alkuperäistä; fill muuttaa sitä.
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.fill ja copyOf” ilmainen?

Kyllä – oppitunnin ”Arrays.fill ja copyOf” 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.fill ja copyOf”?

Täytä ja muuta taulukoiden kokoa 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 3/4.

Kuinka kauan ”Arrays.fill ja copyOf”-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