网站首页 > 精选教程 正文
最近收到很多同学留言说在面试中被问到数组反转的问题,应该如何去实现?当然有多种方法可以解决此问题,今天主要给大家讲下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种方法来实现。你学会了吗?
猜你喜欢
- 2024-11-03 4.5 Java的字符串操作和方法 java字符串使用教学
- 2024-11-03 一文教你Java字符串处理(String,StringBuffer...
- 2024-11-03 「Java工具类」Jackson工具类,json字符串转各种对象或者集合
- 2024-11-03 java int类型转char类型总结 java将int转换为char
- 2024-11-03 《JAVA编程思想》5分钟速成:第13章(字符串)
- 2024-11-03 Java字符串操作的函数式方法 java中字符串的操作
- 2024-11-03 Java基于代码实战的字符流父类、字符转换流、缓冲字符流、过滤流
- 2024-11-03 7. 反转整数(LeetCode 题解) 反转整数python
- 2024-11-03 JAVA 基本类型之间的转换(新手) java基础类型转换
- 2024-11-03 Java读取制表符文本转换为JSON java读取表格
你 发表评论:
欢迎- 06-30【AI绘永昌】风景篇(二)(永昌图文)
- 06-30AI风景建筑图集(ai景观平面图)
- 06-30AI绘制精美绚丽的景色(ai绘制图案)
- 06-30AI风景,不存在的地方又增加了(ai风景插画作品)
- 06-301 分钟解锁!运用 DS + 即梦 + 豆包,轻松打造个性化风景音乐短视频
- 06-30美景欣赏 #AI绘画#(美景图画)
- 06-30AI动漫风景图集1 ~(ai动漫图片)
- 06-30原图壁纸,ai绘画风景(原图壁纸下载)
- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)