Tengo una matriz de enteros en Java, me gustaría usar solo una parte de ella. Sé que en Python puedes hacer algo como esta matriz [index:] y devuelve la matriz del índice. Es posible algo así en Java.
275
La longitud de una matriz en Java es inmutable. Por lo tanto, debe copiar la parte deseada como una nueva matriz.
Utilice el copyOfRange
método de la clase java.util.Arrays :
int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);
startIndex es el índice inicial del rango que se copiará, inclusive.
endIndex es el índice final del rango a copiar, exclusivo. (Este índice puede estar fuera de la matriz)
P.ej:
//index 0 1 2 3 4
int[] arr = {10, 20, 30, 40, 50};
Arrays.copyOfRange(arr, 0, 2); // returns {10, 20}
Arrays.copyOfRange(arr, 1, 4); // returns {20, 30, 40}
Arrays.copyOfRange(arr, 2, arr.length); // returns {30, 40, 50} (length = 5)
Arrays.copyOfRange(Thread.currentThread().getStackTrace(),1,255)
como en lugar de 255 no puedo usar Integer.MAX_VALUE, en caso de que no quiera obtener la longitud realendIndex
tamaño mayor que la matriz aprobada como primer argumento. Entonces, si desea una copia completa, cree una variable que se refiera a esta matriz y useArrays.copyOfRange(var, 0, var.length)
oArrays.copyOf(var, var.length)
Arrays.copyOfRange(Thread.currentThread().getStackTrace(),1,Short.MAX_VALUE)
ArrayIndexOutOfBoundsException
.Puede ajustar su matriz como una lista y solicitar una sublista de la misma.
fuente
Sí, puedes usar Arrays.copyOfRange
Hace casi lo mismo (tenga en cuenta que hay una copia: no cambia la matriz inicial).
fuente
List
ysubList
como se indica en la respuesta de @ K-ballo.Puedes probar:
Ver javadoc para Sistema .
fuente
Si está utilizando Java 1.6 o superior, puede usar
Arrays.copyOfRange
para copiar una parte de la matriz. Desde el javadoc:Aquí hay un ejemplo simple :
fuente
Echa un vistazo a copyOfRange ; y ejemplo:
fuente
Puedes usar algo como esto:
Arrays#copyOfRange
fuente
Puede usar el
subList(int fromIndex, int toIndex)
método en sus enteros arr, algo como esto:La salida será:
2 3
.Tenga en cuenta que el
subList(int fromIndex, int toIndex)
método realiza menos 1 en la segunda variable que recibe (var2 - 1), no sé exactamente por qué, pero eso es lo que sucede, tal vez para reducir la posibilidad de exceder el tamaño de la matriz.fuente