Hoe maak je een subarray van een andere array in Java?

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)

Javadoc

JDK <= 1.5

System.arraycopy(Object[] src, int srcStartIndex, Object[] dest, int dstStartIndex, int lengthOfCopiedIndices); 

Javadoc


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:

Link naar vergelijkbare vraag


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 STOSWdoor 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.

Other episodes