如何在没有反向方法的情况下反转ArrayList?

时间:2013-10-06 23:34:10

标签: java methods arraylist reverse

您好我试图在没有反向方法的情况下反转ArrayList。我只是想让它在没有方法的情况下工作。我似乎无法做对。 这就是我到目前为止所做的:

for (int x = nums.size()-1; x>=0; x--)
    {

        for(int z =0; z<nums.size();z++)
        {
            nums.set(z, x);

        }
    }

这是我的输出: 跑: 0 1 2 3

1 1 1 1 建立成功(总时间:0秒)

2 个答案:

答案 0 :(得分:1)

你可以从底部提升&amp;同时从顶部(size() - 1)交换元素下降,并在中间相遇时停止。

int i = 0;
int j = nums.size()-1;
while (i < j) {
    int temp = nums.get(i);
    nums.set( i, nums.get(j));
    nums.set( j, temp);
    i++; j--;
}

答案 1 :(得分:0)

您可以一次成对交换,从两端进入中心:

for (int i = 0; i < nums.size()/2; i++) {
    Integer left = nums.get(i);
    Integer right = nums.get(nums.size()-1-i);
    nums.set(i, right);
    nums.set(nums.size()-1-i, left);
}

Integerint使用left代替right,Java不必在intInteger之间进行转换值(第一个是基元,第二个是实际对象)。这样可以提高性能。