Em C/C++
nós temos uma memset()
função que pode cumprir meu desejo, mas em Java
como posso inicializar todos os elementos com um valor específico? Sempre que escrevemos int[] array=new int[10];
, isso simplesmente inicializa um array de tamanho 10 com todos os elementos iguais a zero. Eu só quero alterar este inteiro de inicialização para um dos meus array. ou seja, eu quero inicializar um array que tenha todos os elementos iguais a -1
. Caso contrário, tenho que colocar um for
loop logo após a inicialização, que varia de índice 0
a índice size-1
e dentro desse loop, estou atribuindo elemento a -1
. Abaixo está o código para mais compreensão-
int[] array = new int[10];
for (int i = 0; i < size; i++) {
array[i] = -1;
}
Eu estou indo correto? Existe alguma outra maneira de fazer o mesmo?
Arrays.fill()
. Ele faz a mesma coisa.public static void fill(int[] a, int val) {
for (int i = 0, len = a.length; i < len; i++)
a[i] = val;
}
memset
também pode ser usado, e de fato é muito útil, em matrizes de inteiros quando você precisa preencher0
ou-1
, por exemplo, em problemas de DP.Há também
fonte
Também é possível com fluxos Java 8:
Provavelmente, não é a maneira mais eficiente de fazer o trabalho, no entanto.
fonte
Stream.generate(() -> new Whatever("Hello World", 42)).limit(count).toArray();
), portanto, é mais flexível do que Arrays.fill (). Não tenho certeza sobre a eficiência, porém, como você diz.Você pode fazer isso se for curto:
int[] array = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
mas isso é ruim para mais do que apenas alguns.
Mais fácil seria um
for
loop:Edit: Eu também gosto da
Arrays.fill()
opção que outras pessoas mencionaram.fonte
java.util.Arrays.fill ()
fonte
Você já tentou a função Arrays.fill ?
fonte
Você pode usar
Arrays.fill(array, -1)
.fonte
Evidentemente, você pode usar Arrays.fill (), mas a maneira como você fez isso também funciona.
fonte
Arrays.fill()
usa umfor
loop com índice0
parasize-1
. Da mesma forma, o que eu fiz. Obrigado pela sua resposta.Usando Java 8, você pode simplesmente usar
ncopies
deCollections
classe:No seu caso, será:
Aqui está uma resposta detalhada de um caso semelhante seu.
fonte
Para listas, você pode usar
Collections.fill(arrayList, "-")
fonte