迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > 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/12/17 浏览次数:217 分类:Java

本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。

如何在 Java 中把 Hashmap 转换为 JSON 对象

发布时间:2023/12/17 浏览次数:187 分类:Java

它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。

如何在 Java 中按值排序 Map

发布时间:2023/12/17 浏览次数:171 分类:Java

本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map 进行排序,并列出了一些示例代码来理解它。

如何在 Java 中打印 HashMap

发布时间:2023/12/17 浏览次数:192 分类:Java

本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。

在 Java 中更新 Hashmap 的值

发布时间:2023/12/17 浏览次数:146 分类:Java

本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。

Java 中的 hashmap 和 map 之间的区别

发布时间:2023/12/17 浏览次数:79 分类:Java

本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,

在 Java 中获取用户主目录

发布时间:2023/12/17 浏览次数:218 分类:Java

这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。

Java 中 size 和 length 的区别

发布时间:2023/12/17 浏览次数:179 分类:Java

这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。

Java 中的互斥锁

发布时间:2023/12/17 浏览次数:111 分类:Java

了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便