我是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中实现同样的目标。
答案 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;
}
}
值得注意的是,如果数组长度是奇数,则无关紧要,因为中值将保持不变。我不得不承认我没有对此进行过测试,但它应该有效。
答案 1 :(得分:1)
我在这里写了一个例子:
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));