Hoe maak je een subarray van een andere array? Is er een methode die de indexen uit de eerste array haalt, zoals:
methodName(object array, int start, int end)
Ik wil niet doorgaan over het maken van loops en mijn programma laten lijden.
Ik krijg steeds foutmelding:
kan de symboolmethode copyOfRange(int[],int,int) niet vinden
Dit is mijn 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);
}
}
Antwoord 1, autoriteit 100%
U kunt
. gebruiken
JDK > 1.5
Arrays.copyOfRange(Object[] src, int from, int to)
JDK <= 1.5
System.arraycopy(Object[] src, int srcStartIndex, Object[] dest, int dstStartIndex, int lengthOfCopiedIndices);
Antwoord 2, autoriteit 41%
Arrays.copyOfRange(..)
is toegevoegd in Java 1.6. Dus misschien heb je niet de laatste versie. Als het niet mogelijk is om te upgraden, kijk dan naar System.arraycopy(..)
Antwoord 3, autoriteit 15%
Gebruik de methode copyOfRange van de klasse java.util.Arrays:
int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);
Voor meer informatie:
4, Autoriteit 6%
Ja, het heet System.arraycopy (object, int, object, int, int) .
Het gaat nog steeds ergens een lus uitvoeren, tenzij dit kan worden geoptimaliseerd in zoiets als REP STOSW
door de JIT (in welk geval de lus in de CPU is).
int[] src = new int[] {1, 2, 3, 4, 5};
int[] dst = new int[3];
System.arraycopy(src, 1, dst, 0, 3); // Copies 2, 3, 4 into dst
5, Autoriteit 2%
Apache gebruiken ArrayUtilste downloaden op deze linkje kunt de methode gemakkelijk gebruiken
subarray(boolean[] array, int startIndexInclusive, int endIndexExclusive)
“boolean” is slechts een voorbeeld, er zijn methoden voor alle primitieven java-typen
Antwoord 6
int newArrayLength = 30;
int[] newArray = new int[newArrayLength];
System.arrayCopy(oldArray, 0, newArray, 0, newArray.length);
Antwoord 7
De code is correct, dus ik vermoed dat je een oudere JDK gebruikt. De javadoc voor die methode zegt dat het er al is sinds 1.6. Typ op de opdrachtregel:
java -version
Ik vermoed dat je niet 1.6 gebruikt
Antwoord 8
Als u Java gebruikt vóór versie 1.6, gebruik dan System.arraycopy()
. Of upgrade uw omgeving.