Wie erstelle ich ein Sub-Array aus einem anderen Array? Gibt es eine Methode, die die Indizes aus dem ersten Array übernimmt, wie z.
methodName(object array, int start, int end)
Ich möchte nicht darüber hinweggehen, Schleifen zu machen und mein Programm leiden zu lassen.
Ich bekomme immer wieder Fehler:
Symbolmethode copyOfRange (int [], int, int) kann nicht gefunden werden
Das ist mein Code:
import java.util.*;
public class testing
{
public static void main(String [] arg)
{
int[] src = new int[] {1, 2, 3, 4, 5};
int b1[] = Arrays.copyOfRange(src, 0, 2);
}
}
org.bouncycastle.util.Arrays
.Arrays.copyOfRange(..)
wurde in Java 1.6 hinzugefügt. Vielleicht haben Sie nicht die neueste Version. Wenn ein Upgrade nicht möglich ist, schauen Sie sich anSystem.arraycopy(..)
quelle
Verwenden Sie die copyOfRange-Methode aus der Klasse java.util.Arrays:
int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);
Für mehr Details:
Link zu ähnlicher Frage
quelle
Ja, es heißt System.arraycopy (Object, int, Object, int, int) .
Es wird jedoch immer noch irgendwo eine Schleife ausgeführt, es sei denn, dies kann in etwa
REP STOSW
durch die JIT optimiert werden (in diesem Fall befindet sich die Schleife innerhalb der CPU).quelle
Mit Apache ArrayUtils, das unter diesem Link heruntergeladen werden kann, können Sie die Methode einfach verwenden
"boolean" ist nur ein Beispiel, es gibt Methoden für alle primitiven Java-Typen
quelle
JDK> = 1,8
Ich stimme allen obigen Antworten zu. Es gibt auch einen guten Weg mit Java 8 Streams:
Dies hat den Vorteil, dass es für viele verschiedene Arten von "src" -Arrays nützlich sein kann und dazu beiträgt, das Schreiben von Pipeline-Operationen im Stream zu verbessern.
Nicht speziell zu dieser Frage, aber zum Beispiel, wenn das Quell-Array war
double[]
und wiraverage()
das Sub-Array nehmen wollten :quelle
quelle
Der Code ist korrekt, ich vermute also, dass Sie ein älteres JDK verwenden. Das Javadoc für diese Methode sagt, dass es seit 1.6 dort ist. Geben Sie in der Befehlszeile Folgendes ein:
Ich vermute, dass Sie nicht 1.6 ausführen
quelle
Wenn Sie Java vor Version 1.6 verwenden, verwenden Sie es
System.arraycopy()
stattdessen. Oder aktualisieren Sie Ihre Umgebung.quelle