Heim  >  Artikel  >  Java  >  Dies kann wie folgt umgeschrieben werden: Mit welchen Methoden kann ein Java-Array kopiert werden?

Dies kann wie folgt umgeschrieben werden: Mit welchen Methoden kann ein Java-Array kopiert werden?

王林
王林nach vorne
2023-05-09 10:13:081280Durchsuche

Vorwort

Das sogenannte Kopieren eines Arrays bezieht sich auf das Kopieren der Elemente in einem Array in ein anderes Array

Es gibt die folgenden 4 Methoden zum Implementieren des Array-Kopierens in Java:

  • Ursprüngliche Zuweisungsmethode

  • Arrays The copyOf()-Methode der Arrays-Klasse, die copyOfRange()-Methode der Arrays-Klasse, die arraycopy()-Methode der System-Klasse, die clone()-Methode der Object-Klasse,

  • 1 Ursprüngliche Zuweisungsmethode

    public static void method01(int[] arr, int[] ans) {
    		for (int i = 0; i < arr.length; i++) {
    			ans[i] = arr[i];
    		}
    		System.out.println("复制的ans数组为 " + Arrays.toString(ans));
    	}
  • 2. Verwenden Sie die Methode copyOf()
  • Die Methode copyOf() kopiert das Array auf die angegebene Länge

  • Das Syntaxformat der Methode copyOf() der Klasse Arrays lautet wie folgt:
  • Arrays.copyOf(dataType[] srcArray,int length);

    wobei,

    stellt die Länge des neuen Arrays nach dem Kopieren dar.
Wenn Sie diese Methode zum Kopieren eines Arrays verwenden, beginnt die Kopie standardmäßig beim ersten Element des ursprünglichen Arrays (Indexwert ist 0) und die Länge des Zielarrays ist die Länge. Wenn die Länge größer als srcArray.length ist, wird das Zielarray mit dem Standardwert gefüllt. Wenn die Länge kleiner als srcArray.length ist, wird es bis zum Längenelement kopiert (Indexwert ist Länge-1).

Hinweis: Wenn das Zielarray bereits vorhanden ist, wird es neu erstellt.

public static void method02(int[] arr, int[] ans) {
		ans = Arrays.copyOf(arr, arr.length + 3);
		System.out.println("复制的ans数组为 " + Arrays.toString(ans));
	}

3. Verwenden Sie die CopyOfRange()-Methode

Die CopyOfRange()-Methode der Arrays-Klasse ist eine weitere Methode zum Kopieren eines Arrays:

Arrays.copyOfRange(dataType[] srcArray,int startIndex,int endIndex)
srcArray 表示要进行复制的数组,length wobei:

srcArray das Original darstellt Array.

startIndex stellt den Startindex zum Starten des Kopiervorgangs dar. Das Zielarray enthält das dem Startindex entsprechende Element. Außerdem muss startIndex zwischen 0 und srcArray.length liegen.

endIndex stellt den Endindex dar. Der Endindex muss größer oder gleich startIndex sein und kann größer als srcArray sein. Länge wird das Zielarray mit Standardwerten gefüllt.

  • Hinweis: Wenn das Zielarray bereits vorhanden ist, wird es neu erstellt.
  • public static void method03(int[] arr, int[] ans) {
    		ans = Arrays.copyOfRange(arr, 0, arr.length + 3);
    		System.out.println("复制的ans数组为 " + Arrays.toString(ans));
    	}

    4. Verwenden Sie die arraycopy()-Methode.

  • arraycopy()-Methode befindet sich in der Klasse java.lang.System und ihre Syntax lautet wie folgt:
  • System.arraycopy(dataType[] srcArray,int srcIndex,int destArray,int destIndex,int length)

    Wobei srcArray das ursprüngliche Array darstellt; Startindex im Originalarray; destArray stellt den Startindex im Zielarray dar; Länge stellt die Länge des zu kopierenden Arrays dar.

  • Wenn Sie diese Methode zum Kopieren eines Arrays verwenden, muss Länge+srcIndex kleiner oder gleich srcArray.length sein und Länge+destIndex muss kleiner oder gleich destArray.length sein.

Hinweis: Das Zielarray muss bereits vorhanden sein und wird nicht rekonstruiert, was dem Ersetzen einiger Elemente im Zielarray gleichkommt.

public static void method03(int[] arr, int[] ans) {
		ans = Arrays.copyOfRange(arr, 0, arr.length + 3);
		System.out.println("复制的ans数组为 " + Arrays.toString(ans));
	}
5. Mit der clone()-Methode können auch Arrays kopiert werden. Diese Methode ist eine Methode in der Klasse Object und kann ein Objekt mit separatem Speicherplatz erstellen. Da das Array auch eine Object-Klasse ist, können Sie das Array auch mit der clone()-Methode des Array-Objekts kopieren. Der Rückgabewert der

clone()-Methode ist vom Typ Object, der in den entsprechenden Typ umgewandelt werden muss. Die Syntax ist relativ einfach:

array_name.clone()
public static void method05(int[] arr, int[] ans) {
		ans = arr.clone();
		System.out.println("复制的ans数组为 " + Arrays.toString(ans));
	}

Hinweis: Die oben genannten Methoden sind alle flache Kopien. Beim flachen Kopieren wird nur die Referenzadresse des Objekts kopiert. Die beiden Objekte verweisen auf dieselbe Speicheradresse. Wenn also ein Wert geändert wird, ändert sich der andere Wert entsprechend. Deep Copy kopiert Objekte und Werte. Wenn ein Wert der beiden Objekte geändert wird, ändert sich der andere Wert nicht.

Vollständiger Testfall

package com.zhuang;

import java.util.Arrays;

/**
 * 
 * @ClassName: ArrayCopy
 * @Description:测试数组复制的几种方法
 * @author: KangXiaoZhuang
 * @date: 2022年10月8日 下午2:19:06
 */
public class ArrayCopy {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] arr = new int[] { 57, 81, 68, 75, 91 };
		int[] ans = new int[arr.length];
		method01(arr, ans);
		method02(arr, ans);
		method03(arr, ans);
		method04(arr, ans);
		method05(arr, ans);
	}

	/**
	 * 
	 * @Title: method01
	 * @Description: 原始复制方法
	 * @author: KangXiaoZhuang
	 * @param: @param arr 原始数组
	 * @param: @param ans 目标数组
	 * @return: void
	 * @throws
	 */
	public static void method01(int[] arr, int[] ans) {
		for (int i = 0; i < arr.length; i++) {
			ans[i] = arr[i];
		}
		System.out.println("原始复制方法复制的ans数组为 " + Arrays.toString(ans));
	}

	/**
	 * 
	 * @Title: method02
	 * @Description: copyOf()方法
	 * @author: KangXiaoZhuang
	 * @param: @param arr 原始数组
	 * @param: @param ans 目标数组
	 * @return: void
	 * @throws
	 */
	public static void method02(int[] arr, int[] ans) {
		ans = Arrays.copyOf(arr, arr.length + 3);
		System.out.println("copyOf()方法复制的ans数组为 " + Arrays.toString(ans));
	}

	/**
	 * 
	 * @Title: method03
	 * @Description: copyOfRange()方法
	 * @author: KangXiaoZhuang
	 * @param: @param arr 原始数组
	 * @param: @param ans 目标数组
	 * @return: void
	 * @throws
	 */
	public static void method03(int[] arr, int[] ans) {
		ans = Arrays.copyOfRange(arr, 0, arr.length + 3);
		System.out.println("copyOfRange()方法复制的ans数组为 " + Arrays.toString(ans));
	}
	
	/**
	 * 
	 * @Title: method04   
	 * @Description: arraycopy()方法
	 * @author: KangXiaoZhuang   
	 * @param: @param arr 原始数组
	 * @param: @param ans 目标数组    
	 * @return: void      
	 * @throws
	 */
	public static void method04(int[] arr, int[] ans) {
		System.arraycopy(arr, 0, ans, 0, 5);
		System.out.println("arraycopy()方法复制的ans数组为 " + Arrays.toString(ans));
	}
	
	/**
	 * 
	 * @Title: method05   
	 * @Description: 使用clone()方法
	 * @author: KangXiaoZhuang   
	 * @param: @param arr
	 * @param: @param ans      
	 * @return: void      
	 * @throws
	 */
	public static void method05(int[] arr, int[] ans) {
		ans = arr.clone();
		System.out.println("clone()方法复制的ans数组为 " + Arrays.toString(ans));
	}
}

Ausgabe

Das von der ursprünglichen Kopiermethode kopierte ans-Array ist [57, 81, 68, 75, 91]
Das von der copyOf()-Methode kopierte ans-Array ist [57, 81, 68, 75, 91, 0, 0, 0]

Das von der copyOfRange()-Methode kopierte ans-Array ist [57, 81, 68, 75, 91, 0, 0, 0]

Das ans-Array Von der Methode arraycopy() kopiert ist [57, 81, 68, 75, 91]
Das von der Methode clone() kopierte ans-Array ist [57, 81, 68, 75, 91]

Das obige ist der detaillierte Inhalt vonDies kann wie folgt umgeschrieben werden: Mit welchen Methoden kann ein Java-Array kopiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen