Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 反转数组列表:为什么我必须等于列表大小的一半?_Java_Arraylist - Fatal编程技术网

Java 反转数组列表:为什么我必须等于列表大小的一半?

Java 反转数组列表:为什么我必须等于列表大小的一半?,java,arraylist,Java,Arraylist,今天早些时候,我的教授在课堂上布置了一个任务,在不返回新数组的情况下反转数组,他希望(但没有告诉)我们在不添加和附加元素的情况下这样做。我提出的解决方案如下: ArrayList<Double> al = new ArrayList<Double>(); al.add(5.00); al.add(1.00); al.add(4.00); al.add(2.00); al.add(3.00); for (int i = al.size()-1; i &g

今天早些时候,我的教授在课堂上布置了一个任务,在不返回新数组的情况下反转数组,他希望(但没有告诉)我们在不添加和附加元素的情况下这样做。我提出的解决方案如下:

ArrayList<Double> al = new ArrayList<Double>();
  al.add(5.00);
  al.add(1.00);
  al.add(4.00);
  al.add(2.00);
  al.add(3.00);
for (int i = al.size()-1; i >=0; i--)
{
   double temp = al.get(i);
   int zeroUp = ((al.size()-1)-i);

   al.set(zeroUp, temp);
}
System.out.println(al.toString());
输出:[5.0,1.0,4.0,2.0,3.0]


同样,我们必须将
size()
除以2并为我标记的元素定义一个值的原因是什么?

,因为您要在适当的位置反转数组。您认为
Set()
不会删除其值将发送到传递的索引的元素是正确的

这就是数组[5,1,4,2,3]。函数完成一半后,数组为[3,2,4,2,3]。请注意中间元素两侧的元素是如何相互镜像的。这意味着,当您尝试将下半部分设置为上半部分时,上半部分已经等于下半部分

换句话说,要反转数组,只需将前半部分与后半部分交换即可。[5,1,4,2,3]->[3,1,4,2,5]->[3,2,4,1,5]


我不知道这是否尽可能清楚,但我希望它能有所帮助,因为您正在原地反转阵列。您认为
Set()
不会删除其值将发送到传递的索引的元素是正确的

这就是数组[5,1,4,2,3]。函数完成一半后,数组为[3,2,4,2,3]。请注意中间元素两侧的元素是如何相互镜像的。这意味着,当您尝试将下半部分设置为上半部分时,上半部分已经等于下半部分

换句话说,要反转数组,只需将前半部分与后半部分交换即可。[5,1,4,2,3]->[3,1,4,2,5]->[3,2,4,1,5]


我不知道这是否尽可能清楚,但我希望它能帮助你

你跑得快!在我发布这篇文章之后,我将数组写在一张纸上,并立即注意到我从未以任何方式“保存”覆盖的值。我真的很沮丧,因为我在课堂上没有注意到这一点。我一直坐在这里等待着我的回答,直到我明白为止。我现在完全明白了。非常感谢。你跑得真快!在我发布这篇文章之后,我将数组写在一张纸上,并立即注意到我从未以任何方式“保存”覆盖的值。我真的很沮丧,因为我在课堂上没有注意到这一点。我一直坐在这里等待着我的回答,直到我明白为止。我现在完全明白了。非常感谢。
for (int i = al.size() / 2; i >=0; i--)
{                                   
   double temp = al.get(i);
   int zeroUp = ((al.size()-1)-i);
   al.set(i, al.get(zeroUp));
   al.set(zeroUp, temp);
}
System.out.println(al.toString());