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下标位置复制一位到目标数组最后元素位置,实现数组第一个元素移动到数组最后位置。

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

  • 相关阅读:
    Freemaker Replace函数的正则表达式运用
    [Android]使用Spring for Android改善数据交互流程
    [Freemarker]自定义时间戳函数
    [jquery.validate]自定义方法实现"手机号码或者固定电话"的逻辑验证
    [Javascript]网页链接加上时间戳防止串用户
    支付系统设计
    java设计模式-抽象工厂模式
    IDEA解决maven多module出现多root的问题
    java设计模式-工厂方法模式
    java设计模式-单例模式
  • 原文地址:https://www.cnblogs.com/guofan/p/6627503.html
Copyright © 2011-2022 走看看