Jak wypełnić tablice w Javie?


84

Wiem, jak to zrobić normalnie, ale mógłbym przysiąc, że możesz wypełnić jak [0] = {0,0,0,0}; Jak to robisz w ten sposób? Próbowałem Google, ale nie dostałem nic pomocnego.


1
Prawdziwe pytanie, które powinieneś zadać, brzmi: jak sprawić, by to zadziałało: a [0] = someFunction (4, 0) ;. Z tego powodu wybrana „poprawna” odpowiedź nie jest przydatna.
HoldOffHunger

Odpowiedzi:


63

Możesz to również zrobić w ramach deklaracji:

int[] a = new int[] {0, 0, 0, 0};

11
int [] a = new int [4] spowodowałoby to samo, ponieważ 0 jest wartością domyślną.
Zach Scrivena

5
Lub int [] a = {0, 0, 0, 0}; . Nowy int [] potrzebujesz tylko wtedy, gdy stała nie jest natychmiast używana w deklaracji.
starblue

4
nie jest to przydatne, gdy masz dużą tablicę. Odpowiedź @ cdmckay jest lepsza.
Felipe Leão

Nie zapomnij o odwiecznej zasadzie programowania: „Jeśli zauważysz, że kopiujesz / wklejasz kod, robisz coś nie tak”. Liczba zer lub dowolna wartość domyślna jest właśnie tutaj kopiowana i wklejana.
HoldOffHunger

264

Sprawdź metody Arrays.fill .

int[] array = new int[4];
Arrays.fill(array, 0);

21
+1, ponieważ nie wiedziałem o metodzie Arrays.fill (). Zawsze robiłem to z pętlą for. : D
Spoike

8
@GrantGalitz Nie jestem co do tego przekonany, czy masz link do artykułu lub smt? Ponieważ w przeciwieństwie do Systemklas, java.util.Arraysjest to klasa zaimplementowana przez Javę, a przeglądanie kodu źródłowego pokazuje, że nie różni się od zwykłej pętli.
Pacerier

7
Tablice int są inicjalizowane wartością 0, więc w powyższym przykładzie druga linia nie jest konieczna.
Patrick Brinich-Langlois,

6
@ PatrickBrinich-Langlois: Nadal warto byłoby wskazać swój zamiar wyzerowania.
cdmckay


16

W Javie-8 możesz IntStreamutworzyć strumień liczb, który chcesz powtórzyć, a następnie przekonwertować go na tablicę. To podejście tworzy wyrażenie odpowiednie do użycia w inicjatorze:

int[] data = IntStream.generate(() -> value).limit(size).toArray();

Powyżej sizei valuesą wyrażeniami, które generują liczbę elementów, które chcesz powtórzyć, i powtarzaną wartość.

Próbny.


10
Arrays.fill(arrayName,value);

w java

int arrnum[] ={5,6,9,2,10};
for(int i=0;i<arrnum.length;i++){
  System.out.println(arrnum[i]+" ");
}
Arrays.fill(arrnum,0);
for(int i=0;i<arrnum.length;i++){
  System.out.println(arrnum[i]+" ");
}

Wynik

5 6 9 2 10
0 0 0 0 0

5

Tablicę można zainicjować przy użyciu new Object {}składni.

Na przykład tablicę Stringmożna zadeklarować przez:

String[] s = new String[] {"One", "Two", "Three"};
String[] s2 = {"One", "Two", "Three"};

Prymitywy można również zainicjować w podobny sposób:

int[] i = new int[] {1, 2, 3};
int[] i2 = {1, 2, 3};

Lub tablica niektórych Object:

Point[] p = new Point[] {new Point(1, 1), new Point(2, 2)};

Wszystkie szczegóły dotyczące tablic w Javie zostały opisane w rozdziale 10: Tablice w specyfikacji języka Java, wydanie trzecie .


2

Podczas tworzenia elementy tablicy w języku Java są inicjowane do wartości domyślnych. W przypadku liczb oznacza to, że są inicjalizowane na 0, w przypadku odniesień są one zerowe, a dla wartości logicznych mają wartość fałsz.

Aby wypełnić tablicę czymś innym, możesz użyć Arrays.fill () lub jako część deklaracji

int[] a = new int[] {0, 0, 0, 0};

W Javie nie ma skrótów do wypełniania tablic seriami arytmetycznymi, jak w niektórych językach skryptowych.


-3
int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

10
Witamy na stronie! Ta odpowiedź byłaby lepsza, gdybyś mógł dodać jakieś wyjaśnienie, zamiast po prostu wstawiać jakiś kod. Dlaczego miałoby to być lepsze od innych odpowiedzi już udzielonych na to 7-letnie pytanie?
Mogsdad
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.