网站首页 > java教程 正文
最近收到很多同学留言说在面试中被问到数组反转的问题,应该如何去实现?当然有多种方法可以解决此问题,今天主要给大家讲下Java中使用数组的3种常见方法。此方法适用于所有类型的数组,例如字符串数组或整数数组,甚至适用于对象数组,因为它不关注数据类型。
1、直接反转数组
这是在Java中反转数组的最简单方法之一。此算法遍历数组并交换元素,直到达到中点为止。这也称为直接反转数组,因为不使用任何额外的缓冲区。
for(int i=0; i<array.length/2; i++)
{ int temp = array[i];
array[i] = array[array.length -i -1];
array[array.length -i -1] = temp;
}
该算法的时间复杂度为O(n / 2),即O(N),因为我们仅在数组上迭代直到中点,这种方法是大家在面试时的经常想到的解决方案。
2、使用Java中的ArrayList反转数组
这是在Java中反转数组的另一种简单方法,首先将数组转换为List,然后使用 Collections.reverse()方法反转ArrayList。此方法获取一个List并以线性时间反转元素,您可以使用此方法反转int,String 或任何类型的数组。
让我们看一个示例:
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/**
* @Aythor 伯乐 VX:bolelaoshi001
* @Date 2021-05-21
*/
public class ArrayReverseDemo {
public static void main(String args[]) {
String[] typesOfInsurance = {"Apple", "Balana", "Orange"};
System.out.println("array before reverse: " + Arrays.toString(typesOfInsurance));
List<String> listOfProducts = Arrays.asList(typesOfInsurance);
Collections.reverse(listOfProducts);
String[] reversed = listOfProducts.toArray(typesOfInsurance);
System.out.println("array after reverse: " + Arrays.toString(reversed));
}
}
输出结果:
array before reverse: [Apple, Balana, Orange]
array after reverse: [Orange, Balana, Apple]
3、通过使用ArrayUtils.reverse()
Apache Commons是一个开放源代码库,提供了一些非常实用程序库,这些实用程序库对于用Java开发非常重要。Apache commons-lang提供了一个ArrayUtils类,该类具有重载的reverse()方法以反转Java中的int,float 或object数组。另外这个方法直接是反转数组没有返回值。
/**
* @Author bole VX:bolelaoshi001
* @Date 2021-5-21
*/
public class ArrayReverseDemo {
public static void main(String[] args) {
String[] assetClasses = {"bond", "equity", "gold", "real estate"};
System.out.println("Array before reversing: " + Arrays.toString(assetClasses));
ArrayUtils.reverse(assetClasses);
System.out.println("Array after reversing: " + Arrays.toString(assetClasses));
}
}
输出结果:
before reversing: [bond, equity, gold, real estate]
Array after reversing: [real estate, gold, equity, bond]
这种方法会用到Apache commons-lang ,所以需要在POM文件里面添加依赖
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
结论
今天给大家介绍反转数组的3种方法,分别是直接反转,转成ArrayList后再反转,以及使用Apache Commons工具类反转,如果你下次在面试中遇到这个问题,就可以用以上3种方法来实现。你学会了吗?
- 上一篇: 京东大牛详解Java数组翻转方法有那些
- 下一篇: 倒着来?数组?2分钟学会Java实现数组倒序输出
猜你喜欢
- 2024-10-11 JAVA练习题:定义一个数组,获取数组中最大最小值
- 2024-10-11 java中数组(二)(java数组的常见操作)
- 2024-10-11 灵魂拷问:Java如何获取数组和字符串的长度length还是length()?
- 2024-10-11 前后端分离文件上传系列:在安卓系统中将文件转换为字符串并上传
- 2024-10-11 java集合转换数组注意问题(javalist集合转换数组)
- 2024-10-11 尚学堂java学习笔记:数组的返回(java数组作为返回值)
- 2024-10-11 Scala:Array(集合、序列)(scala arraylist)
- 2024-10-11 Java修炼终极指南:124 将对象序列化为字节数组
- 2024-10-11 List与String相互转化的几种方式归纳
- 2024-10-11 Java将字符串解析为Json格式(java字符串解析成数组)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)