您的位置 首页 java

大厂面试题:请说说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如何反转数组

文章地址:https://www.zhihuclub.com/176280.shtml

关于作者: 智云科技

热门文章

网站地图