wake-up-neo.com

nur einen Teil eines Arrays in Java erhalten?

Ich habe ein Array von Integer-Werten in Java, ich möchte nur einen Teil davon verwenden. Ich weiß, dass Sie in Python so etwas wie dieses Array [index:] tun können, und es gibt das Array aus dem Index zurück. Ist so etwas in Java möglich.

201
Borut Flis

Verwenden Sie die copyOfRange-Methode aus Java.util.Arrays class:

int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);

startIndex ist der Anfangsindex des zu kopierenden Bereichs, einschließlich.
endIndex ist der endgültige Index des zu kopierenden Bereichs, exklusiv. (Dieser Index kann außerhalb des Arrays liegen)

Z.B.:

   //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)
342
elias

Sie können Ihr Array als Liste einschließen und eine Unterliste davon anfordern.

MyClass[] array = ...;
List<MyClass> subArray = Arrays.asList(array).subList(index, array.length);
29
K-ballo

Ja, Sie können Arrays.copyOfRange verwenden.

Es macht ungefähr dasselbe (beachten Sie, dass es eine Kopie gibt: Sie ändern das ursprüngliche Array nicht).

21
Denys Séguret

Wenn Sie Java 1.6 oder höher verwenden, 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 Wert bei _original[from]_ wird in das Anfangselement der Kopie eingefügt (es sei denn, _from == original.length_ oder _from == to_). Werte von nachfolgenden Elementen im ursprünglichen Array werden in nachfolgende Elemente in der Kopie eingefügt. Der letzte Index des Bereichs (to), der größer oder gleich from sein muss, kann größer als _original.length_ sein. In diesem Fall wird false gesetzt Elemente der Kopie, deren Index größer oder gleich _original.length - from_ ist. Die Länge des zurückgegebenen Arrays ist _to - from_.

Hier ist ein einfaches Beispiel :

_/**
 * @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]);
    }

}
_
7
Justin Ethier

Du kannst es 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 für System .

4
StvnBrkdll

Check out copyOfRange ; und Beispiel:

int[] arr2 = Arrays.copyOfRange(arr,0,3);
3
dcp

Sie können so etwas verwenden: Arrays#copyOfRange

1
CBredlow

Arrays.copyOfRange (Array, von, bis);

Der Eingabeparameter 'bis' ist inklusive. Fügen Sie daher in Ihrem Code einen 'to' + 1-Wert hinzu, um Ihr Problem zu beheben.