Initialisere matriser i Java

1. Oversikt

I denne raske opplæringen skal vi se de forskjellige måtene vi kan initialisere en matrise og de subtile forskjellene mellom disse.

2. Ett element om gangen

La oss starte med en enkel, loopbasert metode:

for (int i = 0; i <array.length; i ++) {array [i] = i + 2; }

Og la oss også se hvordan vi kan initialisere en flerdimensjonal matrise ett element om gangen:

for (int i = 0; i <2; i ++) {for (int j = 0; j <5; j ++) {array [i] [j] = j + 1; }}

3. På erklæringstidspunktet

La oss nå initialisere en matrise på erklæringstidspunktet:

String array [] = new String [] {"Toyota", "Mercedes", "BMW", "Volkswagen", "Skoda"};

Mens vi starter matrisen, trenger vi ikke spesifisere typen:

int array [] = {1, 2, 3, 4, 5};

Merk at det ikke er mulig å initialisere en matrise etter erklæringen ved hjelp av denne tilnærmingen. Et forsøk på å gjøre det vil resultere i en kompileringsfeil.

4. Bruke Arrays. Fyll ()

De java.util.Arrayer klasse har flere metoder navngitt fylle() som godtar forskjellige typer argumenter og fyller hele matrisen med samme verdi:

lang matrise [] = ny lang [5]; Arrays.fill (array, 30);

Metoden har også flere alternativer som setter et utvalg av en matrise til en bestemt verdi:

int array [] = ny int [5]; Arrays.fill (array, 0, 3, -50);

Merk at metoden godtar matrisen, indeksen til det første elementet, antall elementer og verdien.

5. Bruke Arrays.copyOf ()

Metoden Arrays.copyOf () oppretter en ny matrise ved å kopiere en annen matrise. Metoden har mange overbelastninger som godtar forskjellige typer argumenter.

La oss se et raskt eksempel:

int array [] = {1, 2, 3, 4, 5}; int [] copy = Arrays.copyOf (array, 5);

Noen få notater her:

  • Metoden godtar kildearrayet og lengden på kopien som skal opprettes
  • Hvis lengden er større enn lengden på matrisen som skal kopieres, vil de ekstra elementene initialiseres med standardverdiene
  • Hvis kildearrayen ikke er initialisert, så a NullPointerException blir kastet
  • Hvis kildearrelengden er negativ, så a NegativeArraySizeException blir kastet

6. Bruke Arrays.setAll ()

Metoden Arrays.setAll () angir alle elementene i en matrise ved hjelp av en generatorfunksjon:

int [] array = new int [20]; Arrays.setAll (array, p -> p> 9? 0: p); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Hvis generatorfunksjonen er null, er a NullPointerException blir kastet.

7. Bruke ArrayUtils.clone ()

Til slutt, la oss bruke ArrayUtils.clone () API ut av Apache Commons Lang 3 - som initialiserer en matrise ved å lage en direkte kopi av en annen matrise:

char [] array = new char [] {'a', 'b', 'c'}; char [] copy = ArrayUtils.clone (array);

Merk at denne metoden er overbelastet for alle primitive typer.

8. Konklusjon

I denne artikkelen har vi utforsket forskjellige måter å initialisere matriser i Java på.

Som alltid er den fullstendige versjonen av koden tilgjengelig på GitHub.