zoukankan      html  css  js  c++  java
  • 数组元素前移,第一个元素放置数组末位

      看起来so easy,slice截取,concat拼接到末尾。

      就像这样:

    var arr = [1,2,3];
    var newArr  = arr.slice(1).concat(arr.slice(0,1));
    ///[2,3,1]

      js有专门截取数组的api,很方便很强大,但java并没有,本文使用java来实现这样一个小功能。

    import java.util.Arrays;
    
    public class GetPartOfArray {
        private int[] numberArray;
        private int len;
        
        public void create (int num) {
            len = num;
            numberArray = new int[len];
            for(int i = 0; i < numberArray.length; i ++) {
                numberArray[i] = i;
            }
        }
        
        public void logArr () {
            System.out.println(Arrays.toString(numberArray));
        }
        
        public void firstToEnd () {
            int[] numArr = new int [len];
            System.arraycopy(numberArray, 1, numArr, 0, len - 1);
            System.arraycopy(numberArray, 0, numArr, len - 1, 1);
            
            numberArray = numArr;
        }
        
        public static void main (String[] args) {
            GetPartOfArray g = new GetPartOfArray();
            g.create(10);
            g.logArr();
            g.firstToEnd();
            g.logArr();
        }
    }

      首先,为了为了方便查看数组,引入 java.util.Arrays ,使用 Arrays.toString(数组) 这个api可以很方便的查看数组元素,不然直接 System.out.println(数组) 输出的话,绝对让你看不懂,有可能是引用数组对象的地址。

      然后创建一个数组,自定义长度,元素值为下标值,简单易看。

      接着就是实现这个功能最重要的api,System.arraycopy(),这是一个复制用的api,里面有5个参数:

      System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length);

                 源数组,  开始复制位置, 目标数组,    起始位置,     复制长度

      很好理解~

      我们创建一个新数组,通过分别复制第一个元素与剩余元素来达到目的效果。第一次我们从源数组第二个元素下标位置开始复制,然后将复制值从目标数组的0下标位置开始到预复制长度,这样我们实现了数组元素的整体前移一位;第二次,从源数组0下标位置复制一位到目标数组最后元素位置,实现数组第一个元素移动到数组最后位置。

      最后,我们将实现目的的新数组的引用给原来的数组。至此,功能实现啦。

  • 相关阅读:
    node
    github
    [模块] pdf转图片-pdf2image
    python 15 自定义模块 随机数 时间模块
    python 14 装饰器
    python 13 内置函数II 匿名函数 闭包
    python 12 生成器 列表推导式 内置函数I
    python 11 函数名 迭代器
    python 10 形参角度 名称空间 加载顺序
    python 09 函数参数初识
  • 原文地址:https://www.cnblogs.com/guofan/p/6627503.html
Copyright © 2011-2022 走看看