Como criar uma sub-matriz de outra matriz? Existe um método que utiliza os índices da primeira matriz, como:
methodName(object array, int start, int end)
Não quero deixar de fazer loops e fazer meu programa sofrer.
Eu continuo recebendo erro:
não é possível encontrar o método de símbolo copyOfRange (int [], int, int)
Este é o meu código:
import java.util.*;
public class testing
{
public static void main(String [] arg)
{
int[] src = new int[] {1, 2, 3, 4, 5};
int b1[] = Arrays.copyOfRange(src, 0, 2);
}
}
org.bouncycastle.util.Arrays
.Arrays.copyOfRange(..)
foi adicionado no Java 1.6. Talvez você não tenha a versão mais recente. Se não for possível atualizar, vejaSystem.arraycopy(..)
fonte
Use o método copyOfRange da classe java.util.Arrays:
int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);
Para mais detalhes:
Link para pergunta semelhante
fonte
Sim, é chamado System.arraycopy (Object, int, Object, int, int) .
No entanto, ele ainda executará um loop em algum lugar, a menos que isso possa ser otimizado para algo como
REP STOSW
o JIT (nesse caso, o loop está dentro da CPU).fonte
Usando o Apache ArrayUtils para download neste link, você pode usar facilmente o método
"boolean" é apenas um exemplo, existem métodos para todos os tipos java primitivos
fonte
JDK> = 1,8
Eu concordo com todas as respostas acima. Há também uma boa maneira com o Java 8 Streams:
O benefício disso é que ele pode ser útil para muitos tipos diferentes de matriz "src" e ajuda a melhorar as operações de gravação de pipeline no fluxo.
Não é específico sobre esta questão, mas, por exemplo, se a matriz de origem era
double[]
e desejávamos tiraraverage()
da sub-matriz:fonte
fonte
O código está correto, então acho que você está usando um JDK mais antigo. O javadoc para esse método diz que existe desde a versão 1.6. Na linha de comando, digite:
Eu estou supondo que você não está executando o 1.6
fonte
Se você estiver usando java antes da versão 1.6, use
System.arraycopy()
. Ou atualize seu ambiente.fonte