Ich habe ein Array von Ganzzahlen in Java, ich möchte nur einen Teil davon verwenden. Ich weiß in Python, dass Sie etwas wie dieses Array [index:] tun können und es das Array aus dem Index zurückgibt. Ist so etwas in Java möglich.nur Teil eines Arrays in Java erhalten?
Antwort
Verwenden copyOfRange
Methode aus java.util.Arrays Klasse:
int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);
start ist der Anfangsindex des Bereichs kopiert werden, inklusive.
endIndex ist der endgültige Index der zu kopierenden Bereich, exklusiv. (Dieser Index außerhalb des Arrays liegen kann)
ZB:
//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)
scheint es eine Größenbeschränkung sein? nur das funktioniert: 'Arrays.copyOfRange (Thread.currentThread(). getStackTrace(), 1,255)' als anstelle von 255 kann ich Integer nicht verwenden.MAX_VALUE, falls ich nicht die tatsächliche Länge –
@AquariusPower erhalten möchte, ist die Größe der Array-Größe und sie kann größer als 255 sein. Sie können einfach keinen 'endIndex' bereitstellen, der größer als die Größe des als erstes übergebenen Arrays ist Streit. Also, wenn Sie eine vollständige Kopie wollen, erstellen Sie eine Variable, die auf dieses Array verweist, und verwenden Sie 'Arrays.copyOfRange (var, 0, var.length)' oder 'Arrays.copyOf (var, var.length)' – elias
würde ich müssen Erstellen Sie eine lokale Variable für das Stacktrace-Sub-Array, aber ich habe festgestellt, dass dies funktioniert !!! 'Arrays.copyOfRange (Thread.currentThread(). GetStackTrace(), 1, Short.MAX_VALUE)' –
Ja, Sie Arrays.copyOfRange
Es tut über die gleiche Sache verwenden (beachten Sie, es ist eine Kopie: Sie ändern sich nicht das ursprüngliche Array).
Das heißt, wenn Sie keine explizite Kopie erstellen wollen, müssen Sie eine 'List' und eine' subList' verwenden, wie in der Antwort von @K-ballo beschrieben. –
Das stimmt. Java verfügt nicht über die Array-Slicing-Funktionen, die modernere Sprachen bieten. –
Ich bin mir nicht sicher, ob ich es so sagen würde, aber ... ja, Java bietet kein Array Slicing. (Allerdings gibt es einige Vorteile für diesen Ansatz: weniger Möglichkeiten für Speicherlecks, weniger Array-Overhead durch Vermeiden der zusätzlichen Felder usw. Sie könnten in beide Richtungen gehen.) –
Sie können so etwas wie folgt verwenden: Arrays#copyOfRange
Check out copyOfRange; und Beispiel:
int[] arr2 = Arrays.copyOfRange(arr,0,3);
Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier einzubeziehen und den Link als Referenz zur Verfügung zu stellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - [Aus Bewertung] (/ review/low-quality-posts/18707191) –
Sie könnten Ihr Array als Liste umhüllen und eine Unterliste davon anfordern.
MyClass[] array = ...;
List<MyClass> subArray = Arrays.asList(array).subList(index, array.length);
Wenn Sie mit Java 1.6 oder höher, können Sie Arrays.copyOfRange
verwenden, um einen Teil des Arrays zu kopieren. Aus dem Javadoc:
Kopiert den angegebenen Bereich des angegebenen Arrays in ein neues Array. Der Anfangsindex des Bereichs (von) muss zwischen Null und
original.length
(einschließlich) liegen. Der Wertoriginal[from]
wird in das Anfangselement der Kopie eingefügt (außerfrom == original.length
oderfrom == to
). Werte von nachfolgenden Elementen im ursprünglichen Array werden in nachfolgenden Elementen in der Kopie platziert. Der endgültige Index des Bereichs (to
), der größer oder gleichfrom
sein muss, kann größer alsoriginal.length
sein. In diesem Fall wirdfalse
in allen Elementen der Kopie platziert, deren Index größer oder gleichoriginal.length - from
ist. Die Länge des zurückgegebenen Arrays istto - from
. Hier
ist ein 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]);
}
}
Sie können versuchen:
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);
Siehe javadoc for System.
- 1. Wie Collections.Shuffle rufen nur Teil eines Arrays Java
- 2. Holen Teil eines Arrays
- 3. Sortierung Teil eines Arrays in Ruby
- 4. Rebase nur Teil eines Zweigs
- 5. Drucken eines Arrays in Java
- 6. Einfache Formulartexteingabefelder als Teil eines Arrays
- 7. Drucken eines Arrays von Arrays Java
- 8. Erhalten Sie nur das Datum Teil von Datetime in mssql
- 9. Permutation eines Arrays, mit Wiederholung, in Java
- 10. Teil eines Bildes mit JavaScript erhalten
- 11. Machen Sie nur Teil eines div ziehbaren
- 12. erhalten Teil mit regex
- 13. Regex Rückkehr nur Teil eines Strings
- 14. Nur einen Teil eines XML-Feeds abrufen
- 15. awk zum Drucken Teil eines Arrays in der Shell
- 16. Extrahiere den reellen Teil eines Arrays in Python
- 17. Wie anhängen Daten in jedem Teil Array eines Arrays
- 18. Erhalten Sie einen Teil eines char *
- 19. Nur einen Teil eines HTML-Elements einfärben
- 20. Zeigt nur einen Teil eines div
- 21. Wie kann man einen Teil eines 2D-Arrays bekommen?
- 22. Freier Speicher eines Byte-Arrays in Java
- 23. Wie sortiere ich einen Teil eines Arrays mit Javascript?
- 24. Nur übereinstimmenden Teil der Zeichenfolge in R erhalten
- 25. Speichern einer Typoskript-Array, das mit einem Teil eines Arrays
- 26. Die Länge eines 'benannten' Arrays erhalten?
- 27. Gruppierung eines Arrays und Summe erhalten
- 28. Nur cURL Spezifische Teile eines Arrays
- 29. Wie erhalten Sie alle Schlüsselwerte eines Arrays in Laravel?
- 30. Laden Sie nur einen Teil eines Bildes in Pygame?
mögliches Duplikat von [Ein Segment eines Arrays in Java erfassen, ohne ein neues Array auf dem Heap zu erstellen] (http://stackoverflow.com/questions/1100371/grab-a-segment-of-an-array-in- Java-ohne-Erstellung-ein-neues-Array-on-Heap) –