-7

我是 Java 世界的新手,我正在研究数组,在一次采访中,有人要求我编写一个反转数组的代码,我经历了以下方法.. 使用 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 本身中实现相同的目标。

4

5 回答 5

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;
    }
}

值得注意的是,数组长度是否为奇数并不重要,因为中值将保持不变。我不得不承认我没有测试过这个,但它应该可以工作。

工作示例

于 2013-03-22T14:50:16.600 回答
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));
    }
}

输出

【一二三】
【三二一】

于 2013-03-22T14:54:56.733 回答
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;
}
于 2013-03-22T14:48:11.133 回答
0

写起来应该很简单,只要有逻辑地思考任务即可。

该数组的索引从 0 到 N。要反转顺序,索引 0 处的元素需要与索引 N 交换位置,1 与 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;
}

就是这样。

于 2013-03-22T15:00:31.563 回答
0

您可以在 Java 中尝试类似的方法来反转给定的数组。

Collections.reverse(Arrays.asList(sArray));
于 2013-03-22T15:07:14.533 回答