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 desde el índice. Es algo como esto posible en Java.obtener solo una parte de una matriz en Java?
Respuesta
Uso copyOfRange
método de java.util.Arrays clase:
int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);
startIndex es el índice inicial de la gama para ser copiado, inclusive.
endIndex es el índice final del rango que se va a copiar, exclusivo. (Este índice puede estar fuera de la matriz)
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)
parece que hay un límite de tamaño? solo esto funciona: 'Arrays.copyOfRange (Thread.currentThread(). getStackTrace(), 1,255)' ya que en lugar de 255 no puedo usar Integer.MAX_VALUE, en caso de que no quiera obtener la longitud real –
@AquariusPower el límite de tamaño es el tamaño de la matriz, y puede ser mayor que 255. Simplemente no se puede proporcionar un 'endIndex' más grande que el tamaño de la matriz pasada como la primera argumento. Entonces, si quieres una copia completa, crea una variable que se refiera a esta matriz y usa 'Arrays.copyOfRange (var, 0, var.length)' o 'Arrays.copyOf (var, var.length)' – elias
Tendría que crear una var local para la sub-matriz de stacktrace, ¡pero encontré que esto funciona! 'Arrays.copyOfRange (Thread.currentThread(). GetStackTrace(), 1, Short.MAX_VALUE)' –
sí, se puede utilizar Arrays.copyOfRange
Lo hace de lo mismo (en cuenta que hay una copia: no lo hace el cambio la matriz inicial).
Dicho esto, si no quiere hacer una copia explícita, necesitará usar 'List' y' subList' como se indica en la respuesta de @K-ballo. –
Eso es correcto. Java no tiene las funciones de corte de matriz que ofrecen los idiomas más modernos. –
No estoy seguro de haberlo dicho así, pero ... sí, Java no ofrece cortes de matriz. (Dicho esto, hay algunas ventajas en este enfoque: reducción de las posibilidades de pérdida de memoria, reducción de la sobrecarga de la matriz al evitar los campos adicionales, etc. Se puede ir de cualquier manera). –
Puede usar algo como esto: Arrays#copyOfRange
Salida copyOfRange; y ejemplo:
int[] arr2 = Arrays.copyOfRange(arr,0,3);
Si bien este enlace puede responder la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. - [De la opinión] (/ reseña/mensajes de baja calidad/18707191) –
Puede ajustar su matriz como una lista y solicitar una sublista de la misma.
MyClass[] array = ...;
List<MyClass> subArray = Arrays.asList(array).subList(index, array.length);
Si está utilizando Java 1.6 o superior, puede utilizar Arrays.copyOfRange
para copiar una parte de la matriz. Desde javadoc:
Copia el rango especificado de la matriz especificada en una nueva matriz. El índice inicial del rango (desde) debe estar entre cero y
original.length
, inclusive. El valor enoriginal[from]
se coloca en el elemento inicial de la copia (a menos quefrom == original.length
ofrom == to
). Los valores de los elementos subsiguientes en la matriz original se colocan en los elementos subsiguientes en la copia. El índice final del rango (to
), que debe ser mayor o igual afrom
, puede ser mayor queoriginal.length
, en cuyo casofalse
se coloca en todos los elementos de la copia cuyo índice es mayor o igual queoriginal.length - from
. La longitud de la matriz devuelta seráto - from
.
Aquí es una simple example:
/**
* @Program that Copies the specified range of the specified array into a new
* array.
* CopyofRange8Array.java
* Author:-RoseIndia Team
* Date:-15-May-2008
*/
import java.util.*;
public class CopyofRange8Array {
public static void main(String[] args) {
//creating a short array
Object T[]={"Rose","India","Net","Limited","Rohini"};
// //Copies the specified short array upto specified range,
Object T1[] = Arrays.copyOfRange(T, 1,5);
for (int i = 0; i < T1.length; i++)
//Displaying the Copied short array upto specified range
System.out.println(T1[i]);
}
}
Usted puede tratar de:
System.arraycopy(sourceArray, 0, targetArray, 0, targetArray.length);// copies whole array
// copies elements 1 and 2 from sourceArray to targetArray
System.arraycopy(sourceArray, 1, targetArray, 0, 2);
Ver javadoc for System.
- 1. Obtener parte de una matriz
- 2. Obtenga parte de una matriz de caracteres
- 3. usando parte de una matriz de bytes
- 4. ¿Cómo obtener una columna de una matriz java 2D?
- 5. Enlazando solo parte de una etiqueta
- 6. ¿Cómo devolver una parte de una matriz en Ruby?
- 7. Mostrando solo una parte de un div
- 8. JavaScript forma parte de una matriz
- 9. meld: Hacer que una parte solo lea
- 10. error: Una etiqueta solo puede ser parte de una declaración
- 11. obtener una parte de una línea después de grep
- 12. Mongodb obtener una parte específica del documento
- 13. ¿Cómo puedo filtrar una matriz de valores hash para obtener solo las claves en otra matriz?
- 14. ¿Cómo determinar que una matriz es una parte de otra?
- 15. SSIS Cómo obtener una parte de una cadena por separador
- 16. ¿Cómo obtener una matriz de valores de una matriz asociativa?
- 17. Java: ¿cómo inicializar una matriz en Java en una línea?
- 18. ¿Cómo obtener una matriz secundaria de matriz en Java, sin copiar datos?
- 19. ¿Cómo puedo comentar solo parte de una línea en Perl?
- 20. cómo recuperar parte de una cadena en java?
- 21. ¿Cómo puedo copiar una parte de una matriz a otra matriz en C++?
- 22. ¿Cómo obtener solo la última parte de una ruta en Python?
- 23. Obtener la longitud de la matriz de una matriz 2D en Java
- 24. ¿Cómo mostrar solo una parte de una imagen solo con la etiqueta img?
- 25. Cómo firmar solo una parte específica de XML
- 26. inicializar una matriz booleana en Java
- 27. obtener las filas y columnas de una matriz matriz 2D en Java
- 28. ¿Cómo obtener una parte de una imagen y usarla como una imagen separada?
- 29. ¿Cómo obtener solo la parte de fecha de getdate()?
- 30. Cómo convierto una parte de una tupla de python (matriz de bytes) en un número entero
posible duplicado de [Toma un segmento de una matriz en Java sin crear una nueva matriz en el montón] (http://stackoverflow.com/questions/1100371/grab-a-segment-of-an-array-in- java-without-creating-a-new-array-on-heap) –