迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

克隆 Java 数组

作者:迹忆客 最近更新:2023/09/11 浏览次数:

可以通过以下方式将 Java 数组复制到另一个数组中。

  • 使用变量赋值:这种技术有其缺点,因为对数组元素的任何更改都会反映在两个地方。
  • 创建一个大小相同的数组并复制每个元素。
  • 对阵列使用克隆技术。克隆方法创建一个大小相似的全新数组。
  • 利用 System.arraycopy() 技术。arraycopy 是一种从数组中复制特定部分的方法。

使用 Java 中的 for 循环手动复制 Java 数组

通常,当我们想要复制 ab 等变量时,我们按以下方式执行复制操作:

public class Main 
{ 
     public static void main(String[] args) 
    {
         int IArray[] = {24,45,56}; 
       
        System.out.println("Before assignment the values of IArray[] are:"); 
        for (int i=0; i<IArray.length; i++) 
             System.out.print(IArray[i] + " ");
 
        int CArray[] = new int[IArray.length]; 
 
        CArray =  IArray;     
        CArray[1]++; 
 
        System.out.println("\nElements of IArray[]:"); 
        for (int i=0; i<IArray.length; i++) 
              System.out.print(IArray[i] + " "); 
 
        System.out.println("\nElements of CArray[]:"); 
        for (int i=0; i<CArray.length; i++) 
              System.out.print(CArray[i] + " "); 
    } 
}

输出:

Before assignment the values of IArray[] are:
24 45 56 
Elements of IArray[]:
24 46 56 
Elements of CArray[]:
24 46 56 

当你将相同的过程应用于数组时,它不会有效。


使用 Arrays.copyOf() 克隆 Java 数组

Arrays.copyOf() 这个方法有助于 System.arraycopy() 过程的内部使用。虽然它不如数组复制有效,但它可以复制完整或部分数组,类似于数组复制方法。copyOf() 方法是 java.util 包中的一个元素,并且是 Arrays 类的一部分。这种方法背后的基本思想是:

public class Main
{
    public static void main(String args[])
    {

        int[] OArray = new int[] {11, 12 ,13};

        System.out.println("Original Arrays elements are");
        for (int i = 0; i < OArray.length; i++)
            System.out.print(OArray[i] + " ");


        int[] CArray = Arrays.copyOf(OArray, 5);

        
        CArray[3] = 22;
        CArray[4] = 66;

        System.out.println("\nNew array after copying and modification are:");
        for (int i = 0; i < copy.length; i++)
            System.out.print(copy[i] + " ");
    }
}

输出:

Original Arrays elements are
11 12 13 
New array after copying and modification are
11 12 13 22 66 

这里,

  • original:将被复制到新创建的数组中的数组。
  • newLength:将返回的复制数组长度。

因此,此方法通过添加 0 来创建新数组来填充或截断长度,从而创建作为指定大小的第一个参数提供的数组的精确副本。这意味着如果复制的数组的大小大于数组 0 中的原始大小,则 s 将替换其余元素。


使用 Arrays.copyOfRange() 克隆 Java 数组

方法 Arrays.copyOfRange() 专门用于复制数组的一部分。类似于 toCopyOf() 方法,该方法使用 System.arraycopy() 技术。Arrays.copyOfRange() 过程背后的基本思想可以描述如下:

import java.util.Arrays;

class Main {
     public static void main(String args[]) 
    {
         int IArray[] = { 100,200,300,400,500 }; 
 
        int[] CArray = Arrays.copyOfRange(IArray, 2, 6); 
        System.out.println("Array within the index range : " + 
        Arrays.toString(CArray));
 
       int[] CArray1 = Arrays.copyOfRange(IArray, 4, IArray.length + 3); 
 
       System.out.println("Array copied within the indexed range: " + Arrays.toString(CArray1));
 
    } 
}

输出:

Array within the index range : [300, 400, 500, 0]
Array copied within the indexed range: [500, 0, 0, 0]

这里,

  • original:正在复制的范围的数组。
  • from:要复制的数组的索引。
  • to:要复制的范围的索引,并且是独占的。

使用 Object.clone() 克隆 Java 数组

Java 数组在内部实现了一个 Cloneable 接口,因此可以毫不费力地克隆 Java 数组。可以克隆一维和二维数组。如果复制一维数组,它会创建复制值的数组元素的扩展副本。

另一方面,当你复制二维或多维数组时,会创建元素的小副本,即复制唯一的参考信息。这个克隆过程是使用提供给数组的 clone() 方法完成的。

class Main 
{     
     public static void main(String args[])  
    {
     int NArray[] = {50,100,150,200,250,300}; 
 
     int CArray[] = NArray.clone(); 
 
    System.out.println("Original Num Array are:");
    for (int i = 0; i <NArray.length; i++) {
            System.out.print(NArray[i]+" "); 
        } 
    System.out.println();
 
    System.out.println("Cloned Num Array are:");
    for (int i = 0; i <CArray.length; i++) {
        System.out.print(CArray[i]+" "); 
        } 
    System.out.println("\n");
 
    System.out.print("NArray == CArray = "); 
    System.out.println(NArray == CArray); 
    } 
}

输出:

Original Num Array are:
50 100 150 200 250 300 
Cloned Num Array are:
50 100 150 200 250 300 

NArray == CArray = false

使用 System.arraycopy() 克隆 Java 数组

Java 的 System 类提供了一个名为 ArrayCopy 的选项,它允许你将元素从一个数组复制到另一个数组。这种方法最常见的模型是:

class Main {
    public static void main(String[] args) {
        //declaring a source array  
        char[] Oarray = { 'I','L','o','v','e','M','y','C','o','u','n','t','r','y'}; 
  
        char[] Farray = new char[14];  
 
        System.arraycopy(Oarray, 0, Farray, 0,14);
        System.out.println("Origional Array Elements are:" + String.valueOf(Oarray));
 
        System.out.println("Arrays after copying elements are:"+ String.valueOf(Farray));  
    }  
}

输出:

Origional Array Elements are:ILoveMyCountry
Arraya after copying elements are:ILoveMyCountry

这里,

  • src_array:从中复制项目的源数组。
  • src_Pos:源数组中的位置是复制开始的点。
  • dest_array:目标所在的数组,元素将被复制到该数组中。
  • dest_Pos:要复制的项目目标数组中的起始位置。
  • length:要复制的数组的长度。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Java 中的打乱数组

发布时间:2023/09/11 浏览次数:173 分类:Java

本教程演示了如何在 Java 中打乱数组。

用 Java 从数组中删除重复项

发布时间:2023/09/10 浏览次数:67 分类:Java

数组是一个集合,可以存储相似类型的元素,并为其分配固定的内存位置。数组也允许存储重复值。本文将演示如何以不同的方式在 Java 中有效地从数组中删除重复项。

如何在 Java 中连接两个数组

发布时间:2023/09/10 浏览次数:82 分类:Java

在本文中,我们将学习如何在 Java 中连接两个数组。可以根据需要使用不同的方法来完成此操作。在某些情况下,用户在合并数组之前也需要执行复制。根据要求。ArrayUtil.addAll() 方法连接 Jav

如何在 Java 中把整数列表转换为整数数组

发布时间:2023/09/10 浏览次数:157 分类:Java

在本文中,我们将介绍在 Java 中如何将整数列表 List<Integer> 转换为整数数组 int[]。我们可以看到,它们都是不同的数据类型,即整数的 ArrayList 和整数数组。前者包含一个对象数据类型即

Java 转换十六进制字符串为 Int

发布时间:2023/09/10 浏览次数:178 分类:Java

本文将介绍我们可以用来将十六进制字符串转换为 int 的三种方法。十六进制或十六进制是一个 16 基数的数字系统,即有 16 种可能的符号代表数字。用来表示数字的十六进制值是十进制中的

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便