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.

William
źródło
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};
Chad Birch
źródło
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);
cdmckay
źródło
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

Arrays.fill(). Metoda jest przeciążona dla różnych typów danych, a nawet istnieje odmiana, która wypełnia tylko określony zakres indeksów.

Zach Scrivena
źródło
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.

Sergey Kalinichenko
źródło
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
Cherryishappy
źródło
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 .

coobird
źródło
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.

Staffan
źródło
-3
int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Emir Hadzimahmutovic
źródło
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