zoukankan      html  css  js  c++  java
  • java 深度复制与浅复制 copyOf、arraycopy、copyOfRange

    1、copyOf

      原型:public static <T> T[] copyOf(T[] original, int newLength)

      original:原数组  newLength:要复制的长度

      Arrays.copyof()

    2、arraycopy

      原型:void arraycopy(Object src, int srcPos, Object dest, int destPos, int  length)

      src:原数组  srcPos:原数组起始位置  dest:目标数组  destPost:目标数组的起始位置  length:复制长度

      System.arraycopy()

      注意:此方法要声明一个同类型且长度足够的数组,否则会报异常

    3、copyOfRange

      原型:public static <T,U> T[] copyOfRange(U[] original, int from, int to)

      original:原数组  from:原数组的起始位置  to:终点位置(不包括)

      Arrays.copyOfRange()

     最实际的应用就是List中的remove方法就是使用了arraycopy()

    public E remove(int var1) {
            this.rangeCheck(var1);
            ++this.modCount;
            Object var2 = this.elementData(var1);
            int var3 = this.size - var1 - 1;  //判断是否移除最后一个元素
            if (var3 > 0) {
                System.arraycopy(this.elementData, var1 + 1, this.elementData, var1, var3);  //将要移除元素后面的元素往前移
            }
    
            this.elementData[--this.size] = null;  //clear to let GC do its work
         return var2; 
    }
  • 相关阅读:
    C&C++ recap
    将Rmarkdown文件转为pdf文件
    ChIP-seq Peak caller MACS index out of range问题解决
    R正则表达式的问题
    nodejs+cheerio爬虫测试
    jetty更换图标
    MyEclipse无法生成class文件
    JPA @OneToOne stackoverflow
    jquery-validate--使用由于疏忽导致的问题1(input失去焦点没有被验证,submit才验证)
    组合框
  • 原文地址:https://www.cnblogs.com/Eeexiang/p/10133031.html
Copyright © 2011-2022 走看看