zoukankan      html  css  js  c++  java
  • Java 数组复制

    1. 使用 for-loop 复制数组元素 

    1 int[] num1 = {1, 2, 3, 4, 5};
    2 int[] num2 = new int[num1.length];
    3 for (int i = 0; i < num1.length; i++) {
    4     num2[i] = num1[i];
    5 }

    2. 使用 System.arrayCopy()

    1 int[] num1 = {1, 2, 3, 4, 5};
    2 int[] num2 = new int[num1.length];
    3 System.arraycopy(num1, 0, num2, 0, num1.length);

    srcPosdestPos 分别指 原数组和目标数组的复制起始点,默认只能复制到末尾!


    Notes: 如果目标数组不足以容纳原数组所有元素,则会抛出异常,现在我把 destPos 设为1,一起看一下结果!

     Throwed an exception already: ArrayIndexOutOfBoundsException

    3. 使用 Arrays.copyOf() or Arrays.copyOfRange()

      3.1 Arrays.copyOf() 使用

    public static int[] copyOf(int[] original, int newLength) // original array, newLength of current array
    int[] num1 = {1, 2, 3, 4, 5};
    int[] num2 = new int[3];
    
    num2 = Arrays.copyOf(num1, 3);  // newLength = 3,只复制前3个元素

    Note:

    如果 newLength 小于原数组,则复制前面 newLength 长度的元素。 

    其实 Arrays.copyOf()内部实现使用了System.arrayCopy()

       3.1 Arrays.copyOfRange() 使用

     public static int[] copyOfRange(int[] original, int from, int to) //from(inclusive), to(exclusive)
    1 int[] num1 = {1, 2, 3, 4, 5};
    2 int[] num2 = new int[5];
    3 num2 = Arrays.copyOfRange(num1, 1, 3);
    //now num2: {2, 3}

    4. Summary:

    1. 可以使用 for-loop 复制元素,但是有点笨!

    2. 可以使用 System.arrayCopy() 复制元素,但是必须复制到数组末尾。

    3. 可以使用 Arrays.copyOf() 复制元素,但是只能从数组首元素开始复制。

    4. 可以使用 Arrays.copyOfRange() 复制元素,可以指定从哪复制,到哪结束,所以这是最万能的数组复制方法!

    加油各位!如果觉得有用的话,可以点个推荐吗?(祈求脸.jpg) 

  • 相关阅读:
    django计数器: form collections import Counter
    issubclass使用
    Python rpartition() 方法
    try...except...else高级用法
    FBV及CBV区别
    类属性及对象属性
    判断类或对象方法
    django md5
    @cached_property
    js Array 中的 map, filter 和 reduce
  • 原文地址:https://www.cnblogs.com/sheepcore/p/12401510.html
Copyright © 2011-2022 走看看