W C/C++
mamy memset()
funkcję, która może spełnić moje życzenie, ale w Java
jaki sposób mogę zainicjować wszystkie elementy do określonej wartości? Ilekroć piszemy int[] array=new int[10];
, po prostu inicjalizujemy tablicę o rozmiarze 10, w której wszystkie elementy są równe zero. Chcę tylko zmienić tę liczbę całkowitą inicjalizacyjną dla jednej z moich tablic. tj. chcę zainicjować tablicę, która ma wszystkie elementy równe -1
. W przeciwnym razie for
tuż po inicjalizacji muszę umieścić pętlę, która obejmuje zakres od indeksu 0
do indeksu, size-1
a wewnątrz tej pętli przypisuję element do -1
. Poniżej znajduje się kod dla lepszego zrozumienia-
int[] array = new int[10];
for (int i = 0; i < size; i++) {
array[i] = -1;
}
Czy mam rację? Czy jest na to inny sposób?
Arrays.fill()
. Robi to samo.public static void fill(int[] a, int val) {
for (int i = 0, len = a.length; i < len; i++)
a[i] = val;
}
memset
może być również używany, i faktycznie jest bardzo przydatny, w tablicach całkowitych, gdy trzeba wypełnić0
lub-1
, na przykład, w problemach DP.Jest także
źródło
Jest to również możliwe w przypadku strumieni Java 8:
Prawdopodobnie nie jest to jednak najbardziej efektywny sposób wykonywania pracy.
źródło
Stream.generate(() -> new Whatever("Hello World", 42)).limit(count).toArray();
), więc jest bardziej elastyczne niż Arrays.fill (). Nie jestem jednak pewien wydajności, jak powiedziałeś.Możesz to zrobić, jeśli jest krótkie:
int[] array = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
ale to szkodzi nie tylko kilku.
Łatwiej byłaby
for
pętla:Edycja: Podoba mi się również
Arrays.fill()
opcja, o której wspominali inni ludzie.źródło
java.util.Arrays.fill ()
źródło
Czy próbowałeś funkcji Arrays.fill ?
źródło
Możesz użyć
Arrays.fill(array, -1)
.źródło
Oczywiście możesz użyć Arrays.fill (), ale sposób, w jaki to zrobiłeś, również działa.
źródło
Arrays.fill()
używafor
pętli z indeksem0
dosize-1
. W ten sam sposób, co ja. Dziękuję za Twoją odpowiedź.Korzystanie Java 8, wystarczy skorzystać
ncopies
zCollections
klasy:W Twoim przypadku będzie to:
Oto szczegółowa odpowiedź na podobny twój przypadek.
źródło
W przypadku list, których możesz użyć
Collections.fill(arrayList, "-")
źródło