通过java机制反转数组

时间:2013-03-22 14:45:35

标签: java arrays

我是java的世界的新bie,我正在通过数组,在一次采访中,我被要求写一个代码来反转一个数组,我已经通过以下方法.. 使用Apache commons ArrayUtils类,但请告知如何通过java本身实现同样的事情,下面是我的方法

 int[] iArray = new int[] {101,102,103,104,105};
     String[] sArray = new String[] {"one", "two", "three", "four", "five"}; 
     System.out.println("Original int array : " + Arrays.toString(iArray));
     ArrayUtils.reverse(iArray); System.out.println("reversed int array : " + Arrays.toString(iArray)); 
     System.out.println("Original String array : " + Arrays.toString(sArray)); ArrayUtils.reverse(sArray); System.out.println("reversed String array in Java : " + Arrays.toString(sArray)); 

输出: -

Original int array : [101, 102, 103, 104, 105] reversed int array : [105, 104, 103, 102, 101] Original String array : [one, two, three, four, five] reversed String array in Java : [five, four, three, two, one]

请告知我们如何在java中实现同样的目标。

5 个答案:

答案 0 :(得分:2)

您可以像这样反转数组:

public void reverse(Object [] a){
    for(int i = 0; i < a.length / 2; i++){
        Object temp = a[i]; // swap using temporary storage
        a[i] = a[a.length - i - 1];
        a[a.length - i - 1] = temp;
    }
}

值得注意的是,如果数组长度是奇数,则无关紧要,因为中值将保持不变。我不得不承认我没有对此进行过测试,但它应该有效。

Working Example

答案 1 :(得分:1)

我在这里写了一个例子:

http://ideone.com/OUA4r9

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String[] array = {"one", "two", "three"};
        String[] reverse = new String[array.length];
        for (int i = 0; i < array.length; i++) {
            reverse[i] = array[array.length - i - 1];
        }
        System.out.println(Arrays.toString(array));
        System.out.println(Arrays.toString(reverse));
    }
}

输出

  

[一,二,三]
  [三,二,一]

答案 2 :(得分:0)

for(int i=0; i<iArray.length/2; i++)
{
    int temp;
    iArray[i] = temp;
    iArray[i] = iArray[jArray.length-i-1];
    iArray[jArray.length-i-1] = temp;
}

答案 3 :(得分:0)

编写应该很简单,只需逻辑思考一下任务。

数组的索引从0到N.要反转顺序,索引0处的元素需要将索引为N的位置与N-1交换,依此类推。

当每对索引i(0 ... N)k(0 ... N)经历了一次交换操作时,就完成了。

这可以用代码中非常小的逻辑表示:

for (int i=0, j=array.length-1; i<j; ++i, --j) {
    temp = array[i];
    array[i] = array[j];
    array[j] = temp;
}

就是这样。

答案 4 :(得分:0)

你可以在Java中尝试这样的东西来反转给定的数组。

Collections.reverse(Arrays.asList(sArray));