Ho un array di Integers in Java, vorrei usare solo una parte di esso. So che in Python puoi fare qualcosa come questo array [index:] e restituisce l'array dall'indice. È qualcosa di simile a questo possibile in Java.ottiene solo una parte di una matrice in Java?
risposta
Usa copyOfRange
metodo da java.util.Arrays classe:
int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);
startIndex è l'indice iniziale della gamma da copiare, inclusiva.
endIndex è l'indice finale dell'intervallo da copiare, esclusivo. (Questo indice può trovarsi al di fuori della matrice)
Esempio:
//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)
sembra esserci un limite di dimensioni? solo questo funziona: 'Arrays.copyOfRange (Thread.currentThread(). getStackTrace(), 1,255)' come al posto di 255 Non posso usare Integer.MAX_VALUE, nel caso in cui non desideri ottenere la lunghezza reale –
@AquariusPower il limite di dimensione è la dimensione dell'array, e può essere maggiore di 255. Non puoi fornire un 'endIndex' più grande della dimensione dell'array passato come prima discussione. Quindi, se vuoi una copia completa, crea una variabile che si riferisce a questo array e usa 'Arrays.copyOfRange (var, 0, var.length)' o 'Arrays.copyOf (var, var.length)' – elias
Dovrei creare una var locale per il sub-array stacktrace, ma ho scoperto che funziona !!! 'Arrays.copyOfRange (Thread.currentThread(). GetStackTrace(), 1, Short.MAX_VALUE)' –
Sì, è possibile utilizzare Arrays.copyOfRange
Si fa la stessa cosa (notare che c'è una copia: non si cambia l'array iniziale).
Detto questo, se non vuoi fare una copia esplicita, dovrai usare un 'List' e un' subList' come descritto nella risposta di @ K-ballo. –
Esatto. Java non ha le strutture per l'affettatura dell'array offerte da lingue più moderne. –
Non sono sicuro se lo direi in questo modo, ma ... sì, Java non offre l'affettatura dell'array. (Detto questo, ci sono alcuni vantaggi a questo approccio: possibilità ridotte di perdite di memoria, sovraccarico di array ridotto evitando i campi extra, ecc. Potresti andare in entrambi i modi.) –
Si può usare qualcosa di simile: Arrays#copyOfRange
Partenza copyOfRange; ed esempio:
int[] arr2 = Arrays.copyOfRange(arr,0,3);
Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il link per riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. - [Dalla recensione] (/ recensione/post di bassa qualità/18707191) –
È possibile avvolgere l'array come elenco e richiedere una sottolista.
MyClass[] array = ...;
List<MyClass> subArray = Arrays.asList(array).subList(index, array.length);
Se si utilizza Java 1.6 o superiore, è possibile utilizzare Arrays.copyOfRange
per copiare una parte della matrice. Da javadoc:
Copia l'intervallo specificato della matrice specificata in una nuova matrice. L'indice iniziale dell'intervallo (da) deve essere compreso tra zero e
original.length
, incluso. Il valore suoriginal[from]
viene inserito nell'elemento iniziale della copia (a meno che non sia ofrom == to
). I valori degli elementi successivi nell'array originale vengono inseriti negli elementi successivi nella copia. L'indice finale dell'intervallo (to
), che deve essere maggiore o uguale afrom
, può essere maggiore dioriginal.length
, nel qual casofalse
viene inserito in tutti gli elementi della copia il cui indice è maggiore o uguale aoriginal.length - from
. La lunghezza dell'array restituito saràto - from
.
Ecco un 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]);
}
}
Si può provare:
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);
Vedi javadoc for System.
- 1. Associazione solo di una parte di un'etichetta
- 2. Ordina una matrice in Java
- 3. Rebase solo una parte di un ramo
- 4. ottiene solo i primi 20 elementi in una raccolta backbone
- 5. C'è solo una parte Ajax di jQuery?
- 6. Rotazione di una matrice NxN in Java
- 7. Carica solo una parte di una pagina con jquery
- 8. errore: un'etichetta può essere solo una parte di una dichiarazione
- 9. Java: come inizializzare una matrice in Java su una riga?
- 10. Come posso scaricare solo una parte di una pagina?
- 11. xamarin.Forms scorre solo una parte della pagina
- 12. Come convertire una matrice di stringhe in una matrice di byte? (java)
- 13. copiare una matrice 2d in Java
- 14. Conversione di una matrice Object [] in una matrice int [] in java?
- 15. metodo generico che accettano solo una parte delle classi
- 16. L'array rileva solo una parte di una parola di input anziché l'intera parola
- 17. Come chiamare Collections.Shuffle solo su parte di un array Java
- 18. HTML5 video - riproduzione solo di una parte di un video
- 19. come convertire una matrice di valori in una matrice binaria
- 20. Iterate attraverso solo parte di un grande elenco in java
- 21. Come firmare solo una parte specifica di XML
- 22. Solo una parte del file CSS viene caricata in Chrome
- 23. Gestire una matrice di grandi dimensioni in Java
- 24. Come convertire una matrice in una tupla?
- 25. jQuery ottiene l'ultima parte dell'URL
- 26. WPF. Come mostrare solo parte di una grande tela?
- 27. Sostituzione solo una parte di espressione regolare corrispondenza
- 28. Colore solo una parte di un elemento HTML
- 29. Come impostare solo una parte di tempo di una variabile DateTime in C#
- 30. Aggiornare solo una parte di un file binario con C++
possibile duplicato di [Afferra un segmento di un array in Java senza creare un nuovo array nell'heap] (http://stackoverflow.com/questions/1100371/grab-a-segment-of-an-array-in- java-without-creating-a-new-array-on-heap) –