网站首页 > 精选教程 正文
最近收到很多同学留言说在面试中被问到数组反转的问题,应该如何去实现?当然有多种方法可以解决此问题,今天主要给大家讲下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读取表格
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- 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)
本文暂时没有评论,来添加一个吧(●'◡'●)