¿Cómo crear una submatriz a partir de otra matriz? ¿Hay algún método que tome los índices de la primera matriz como:
methodName(object array, int start, int end)
No quiero volver a hacer bucles y hacer que mi programa sufra.
Sigo recibiendo errores:
no se puede encontrar el método de símbolo copyOfRange (int [], int, int)
Este es mi 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(..)
fue agregado en Java 1.6. Entonces quizás no tienes la última versión. Si no es posible actualizar, miraSystem.arraycopy(..)
fuente
Utilice el método copyOfRange de la clase java.util.Arrays:
int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);
Para más detalles:
Enlace a pregunta similar
fuente
Sí, se llama System.arraycopy (Object, int, Object, int, int) .
Sin embargo, seguirá ejecutando un bucle en alguna parte, a menos que
REP STOSW
el JIT pueda optimizarlo en algo así (en cuyo caso el bucle está dentro de la CPU).fuente
Usando Apache ArrayUtils descargable en este enlace , puede usar fácilmente el método
"boolean" es solo un ejemplo, hay métodos para todos los tipos primitivos de Java
fuente
JDK> = 1.8
Estoy de acuerdo con todas las respuestas anteriores. También hay una buena manera con Java 8 Streams:
El beneficio de esto es que puede ser útil para muchos tipos diferentes de matriz "src" y ayuda a mejorar las operaciones de canalización de escritura en la secuencia.
No es particular acerca de esta pregunta, pero por ejemplo, si la matriz fuente era
double[]
y queríamos tomaraverage()
la sub-matriz:fuente
fuente
El código es correcto, así que supongo que está utilizando un JDK anterior. El javadoc para ese método dice que ha estado allí desde 1.6. En la línea de comando escriba:
Supongo que no estás ejecutando 1.6
fuente
En su lugar, está utilizando Java antes de la versión 1.6
System.arraycopy()
. O actualice su entorno.fuente