364 Stimmen

Nur einen Teil eines Arrays in Java abrufen?

Ich habe ein Array von Integers in Java, ich möchte nur einen Teil davon verwenden. Ich weiß, dass man in Python so etwas wie array[index:] machen kann und es gibt das Array ab dem Index zurück. Ist so etwas auch in Java möglich.

596voto

elias Punkte 14110

Die Länge eines Arrays in Java ist nicht veränderbar. Sie müssen also den gewünschten Teil in ein neues Array kopieren.
Utilice copyOfRange Methode von java.util.Arrays Klasse:

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, ausschließlich. (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)

42voto

K-ballo Punkte 79342

Sie können Ihr Array in eine Liste umwandeln und eine Unterliste davon anfordern.

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

26voto

Denys Séguret Punkte 355205

Ja, Sie können die Arrays.copyOfRange

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

19voto

StvnBrkdll Punkte 3794

Sie können 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); 

Véase javadoc für System .

8voto

Justin Ethier Punkte 126797

Wenn Sie Java 1.6 oder höher verwenden, können Sie Arrays.copyOfRange um einen Teil des Arrays zu kopieren. Aus der Javadoc:

Kopiert den angegebenen Bereich des angegebenen Arrays in ein neues Array. Der Anfangsindex des Bereichs (from) muss zwischen Null und original.length , einschließlich. Der Wert bei original[from] wird in das erste Element der Kopie gesetzt (es sei denn from == original.length o from == to ). Die Werte der nachfolgenden Elemente des ursprünglichen Arrays werden in die nachfolgenden Elemente der Kopie eingefügt. Der letzte Index des Bereichs ( to ), die größer oder gleich sein muss als from kann größer sein als original.length in diesem Fall false wird in allen Elementen der Kopie platziert, deren Index größer oder gleich ist original.length - from . 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]);
    }

}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X