programas - ¿Cómo crear una matriz secundaria de otra matriz en Java?
matriz de matrices java (8)
¿Cómo crear una sub-matriz 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 ir haciendo bucles y haciendo sufrir mi programa.
Sigo recibiendo error:
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);
}
}
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 el tipo de línea de comando:
java -version
Supongo que no estás corriendo 1.6
Sí, se llama System.arraycopy (Object, int, Object, int, int) .
Sin embargo, seguirá realizando un bucle en algún lugar, a menos que esto pueda optimizarse en algo como REP STOSW
mediante el JIT (en cuyo caso el bucle está dentro de la CPU).
int[] src = new int[] {1, 2, 3, 4, 5};
int[] dst = new int[3];
System.arraycopy(src, 1, dst, 0, 3); // Copies 2, 3, 4 into dst
Si está utilizando Java antes de la versión 1.6, use System.arraycopy()
lugar. O actualizar su entorno.
Use el método copyOfRange de la clase java.util.Arrays:
int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);
Para más detalles:
Enlace a una pregunta similar
Utilizando Apache ArrayUtils descargable en este enlace , puede usar el método fácilmente.
subarray(boolean[] array, int startIndexInclusive, int endIndexExclusive)
"booleano" es solo un ejemplo, existen métodos para todos los tipos de Java de primitivos
Arrays.copyOfRange(..)
fue agregado en Java 1.6. Así que quizás no tengas la última versión. Si no es posible actualizar, mire System.arraycopy(..)
int newArrayLength = 30;
int[] newArray = new int[newArrayLength];
System.arrayCopy(oldArray, 0, newArray, 0, newArray.length);