数组元素前移,第一个元素放置数组末位

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

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

posted @   名字不好起啊  阅读(1208)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示