Initiera arrays i Java

1. Översikt

I den här snabba handledningen kommer vi att se olika sätt på vilka vi kan initiera en matris och de subtila skillnaderna mellan dessa.

2. Ett element i taget

Låt oss börja med en enkel, loopbaserad metod:

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

Och låt oss också se hur vi kan initiera en flerdimensionell matris ett element i taget:

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

3. Vid tidpunkten för deklarationen

Låt oss nu initiera en matris vid tidpunkten för deklarationen:

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

När vi startar arrayen behöver vi inte ange dess typ:

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

Observera att det inte är möjligt att initiera en matris efter deklarationen med den här metoden. Ett försök att göra det kommer att resultera i ett kompileringsfel.

4. Använda Arrays.fill ()

Den java.util.Arrays klassen har flera metoder namngivna fyllning () som accepterar olika typer av argument och fylla hela arrayen med samma värde:

long array[] = new long[5]; Arrays.fill(array, 30);

Metoden har också flera alternativ som sätter ett intervall för en matris till ett visst värde:

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

Observera att metoden accepterar matrisen, indexet för det första elementet, antalet element och värdet.

5. Använda Arrays.copyOf ()

Metoden Arrays.copyOf () skapar en ny array genom att kopiera en annan array. Metoden har många överbelastningar som accepterar olika typer av argument.

Låt oss se ett snabbt exempel:

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

Några anteckningar här:

  • Metoden accepterar källmatrisen och längden på den kopia som ska skapas
  • Om längden är större än längden på den matris som ska kopieras initieras de extra elementen med hjälp av standardvärdena
  • Om källmatrisen inte har initierats, kastas en NullPointerException
  • Om källmatrislängden är negativ, kastas en NegativeArraySizeException

6. Använda Arrays.setAll ()

Metoden Arrays.setAll () ställer in alla element i en matris med hjälp av en generatorfunktion:

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]

Om generatorfunktionen är noll kastas en NullPointerException .

7. Använda ArrayUtils.clone ()

Slutligen, låt oss använda ArrayUtils.clone () API ur Apache Commons Lang 3 - som initierar en array genom att skapa en direkt kopia av en annan array:

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

Observera att denna metod är överbelastad för alla primitiva typer.

8. Slutsats

I den här artikeln har vi utforskat olika sätt att initiera matriser i Java.

Som alltid finns den fullständiga versionen av koden tillgänglig på GitHub.