Java数组反转方式

 更新时间:2024年06月13日 08:33:36   作者:山川星河  
这篇文章主要介绍了Java数组反转方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Java数组反转

//方法1
public class ArrayReverse{
    public static void main(String[] args) {
        //定义数组
        int[] arr = {11, 22, 33, 44, 55, 66};
        //1、把 arr[0] 和 arr[5] 进行交换 {66, 22, 33, 44, 55, 11}
        //2、把 arr[1] 和 arr[4] 进行交换 {66, 55, 33, 44, 22, 11}
        //3、把 arr[2] 和 arr[3] 进行交换 {66, 55, 44, 33, 22, 11}
        //4、一共要交换 3 次 = arr.length / 2
        //5、每次交换时,对应的下标是 arr[i] 和 arr[arr.length - 1 - i]
        //代码
        int temp = 0;
        int len = arr.length;
        for(int i = 0; i < len/2 ;i++){
            temp = arr[len - 1 - i];
            arr[len - 1 - i] = arr[i];
            arr[i] = temp;
        }
    }
} 

//方法2
public class ArrayReverse{
    public static void main(String[] args) {
        //定义数组
        int[] arr1 = {11, 22, 33, 44, 55, 66};

        //使用逆序赋值方式
        //1、先创建一个新的数组 arr2,大小 arr.length
        //2、逆序遍历 arr,将每个元素拷贝到 arr2 的元素中(顺序拷贝)
        //3、建议增加一个循环变量 j -> 0 -> 5
        int[] arr2 = new int[arr1.length];

        for(int i = arr1.length -1, j = 0; i>=0; i--, j++){
            arr2[j] = arr1[i];
        }
        //4、当 for 循环结束后, arr2 就是一个逆序数组
        //5、让 arr 指向 arr2 的数据空间,此时 arr 原来的数据空间就没用变量引用会被当做垃圾, 销毁
        arr1 = arr2;
    }    
} 

Java数组反转Reverse

三种反转数组的方式

public class ReverseArray {
    public static void main(String[] args) {
        int[] arr = {11,22,33,55,66,88};
        printArray(arr);
        reverse0(arr);
        reverse1(arr);
        reverse2(arr);

    }
    public static void reverse0(int[] arr) {
        for(int i=0; i<arr.length/2; i++) {
            int tem = arr[i];
            arr[i] = arr[arr.length-1-i];
            arr[arr.length-1-i] = tem;
        }
        printArray(arr);
    }
    public static void reverse1(int[] arr) {
        for(int start=0,end=arr.length-1;start<end;start++,end--) {
            int temp = arr[start];
            arr[start] = arr[end];
            arr[end] = temp;
        }
        printArray(arr);
    }
    public static void reverse2(int[] arr) {
        int[] tem = new int[arr.length]; 
        for(int i=0; i<arr.length; i++) {
            tem[i] = arr[arr.length-1-i];
        }
        printArray(tem);
    }
    public static void printArray(int[] arr) {
        for(int i=0; i<arr.length; i++) {
            if(arr.length==1) {
                System.out.println("["+arr[0]+"]");
            }
            else if(i==0) {
                System.out.print("["+arr[0]+",");
            }
            else if(i==arr.length-1) {
                System.out.println(arr[i]+"]");
            }
            else {
                System.out.print(arr[i]+",");
            }
        }
    }

}

运行结果:

[11,22,33,55,66,88]
[88,66,55,33,22,11]
[11,22,33,55,66,88]
[88,66,55,33,22,11]

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java行为型设计模式之策略模式详解

    Java行为型设计模式之策略模式详解

    策略模式属于Java-设计模式中行为模式之一,该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换。本文将通过示例详细讲解这一模式,需要的可以参考一下
    2022-11-11
  • 一篇文章教你使用枚举来实现java单例模式

    一篇文章教你使用枚举来实现java单例模式

    本篇文章主要介绍了Java实现单例的3种普遍的模式,饿汉式、懒汉式、枚举式。具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能给你带来帮助
    2021-07-07
  • 详解Java线性结构中的链表

    详解Java线性结构中的链表

    除了一些算法之外,我们还有掌握一些常见的数据结构,比如数组、链表、栈、队列、树等结构,所以接下来就给大家详细讲解一下线性结构中的链表,需要的朋友可以参考下
    2023-07-07
  • Java生成递增流水号(编号+时间+流水号)简单示例

    Java生成递增流水号(编号+时间+流水号)简单示例

    这篇文章主要给大家介绍了关于Java生成递增流水号(编号+时间+流水号)的相关资料,在开发项目漫长的过程中常常会遇到流水号需要自动生成的问题存在,文中给出了详细的代码示例,需要的朋友可以参考下
    2023-07-07
  • Java集合之Map接口与实现类详解

    Java集合之Map接口与实现类详解

    这篇文章主要为大家详细介绍了Java集合中的Map接口与实现类,文中的示例代码讲解详细,对我们学习Java有一定的帮助,感兴趣的可以了解一下
    2022-12-12
  • Java的this关键字的使用与方法的重载相关知识

    Java的this关键字的使用与方法的重载相关知识

    这篇文章主要介绍了Java的this关键字的使用与方法的重载相关知识,是Java入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • SpringBoot @PropertySource与@ImportResource有什么区别

    SpringBoot @PropertySource与@ImportResource有什么区别

    这篇文章主要介绍了SpringBoot @PropertySource与@ImportResource有什么区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-01-01
  • Ajax登录验证实现代码

    Ajax登录验证实现代码

    这篇文章主要为大家详细介绍了jQuery+ajax实现用户登录验证,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • Java线程池使用AbortPolicy策略

    Java线程池使用AbortPolicy策略

    这篇文章主要介绍了 Java线程池使用AbortPolicy策略,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-06-06
  • SpringMVC前后端参数映射

    SpringMVC前后端参数映射

    在web开发中我们都要进行前端传参后端取参的过程,本文主要介绍了SpringMVC前后端参数映射,针对GET, POST, PUT, DELETE 请求的参数该如何映射,感兴趣的可以了解一下
    2023-08-08

最新评论