una programas matriz matrices longitud llenar insertar ejercicio cuadrada crear como arreglos java arrays

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


Puedes usar

JDK> 1.5

Arrays.copyOfRange(Object[] src, int from, int to)

Javadoc

JDK <= 1.5

System.arraycopy(Object[] src, int srcStartIndex, Object[] dest, int dstStartIndex, int lengthOfCopiedIndices);

Javadoc


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);