¿Cómo puedo crear/instancia de una matriz para ser igual a la subcadena de otra matriz, cuando no se conoce el tamaño de la subcadena:gama de Java subcadena
int n; //some number derived somewhere else
String[] grp = elements[i] to elements[i+n];
¿Cómo puedo crear/instancia de una matriz para ser igual a la subcadena de otra matriz, cuando no se conoce el tamaño de la subcadena:gama de Java subcadena
int n; //some number derived somewhere else
String[] grp = elements[i] to elements[i+n];
Uso Arrays.copyOfRange
:
public static <T> T[] copyOfRange(T[] original,
int from,
int to)
Copia el rango especificado de la matriz especificada en una nueva matriz. El índice inicial del rango (
from
) debe se encuentra entre cero yoriginal.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 elementos subsiguientes en la copia. El final de índice de la gama (to
), que debe ser mayor que o igual a de, puede ser mayor queoriginal.length
, en el que se coloca caso nulo en todas las elementos de la copia cuyo índice es mayor que o igual aoriginal.length - from
. La longitud de la matriz devuelta seráto - from
.La matriz resultante es exactamente la misma clase que la matriz original.
En su caso:
String[] grp = Arrays.copyOfRange(elements, i, i + n);
'Arrays.copyOfRange (elementos, i, i + n)' excluiría 'elementos [i + n]'. Para incluirlo, debe usar 'Arrays.copyOfRange (elementos, i, i + n + 1)'. Pero tal vez el OP pretendía copiar n elementos, en cuyo caso su respuesta es correcta. –
Utilizará Arrays.copyOfRange()
.
Aquí se muestra un ejemplo:
String[] original = some array;
String[] grp = Arrays.copyOfRange(original, i, i + n);
El Javadocs para la clase Arrays
tiene mucha información sobre el método:
+1 respuesta + ejemplo – RMT
+1. Debe agregar '+ 1' para incluir' elementos [i + n] 'en el rango. –
Uso Arrays.copyOfRange()
:
String[] grp = Arrays.copyOfRange(grp, i, i+n);
Como su nombre implica grp
se ser un copia de la matriz original y no una vista en i t. No puede tener vistas en la matriz, para eso necesitaría usar un collection. En general, las colecciones son la alternativa más potente y flexible de alto nivel a las matrices.
para obtener el tamaño de la matriz, que haría
String [] grp = new String[n + 1];//inclusive
Entonces, todo lo que tiene que hacer es copiar los elementos más:
for(int x = 0;x < n + 1;x++)
{
grp[x] = elements[i + x];//I'm assuming you have "i" defined somewhere
}
Qué quiere decir que desea crear y la matriz con los mismos valores que otro solo más largo en longitud? – RMT
Una buena pregunta (no obvia). Tenga en cuenta que he sustituido la palabra "selección" por "subcadena" en la pregunta, que es la terminología que está buscando (aunque no es una cadena, sigue siendo la terminología correcta en términos de informática). – mgiuca