【发布时间】:2017-04-05 19:03:41
【问题描述】:
如果我有一个整数数组,我可以使用以下高效代码来切换元素 1 和 5,并打印新数组: (假设在main方法中,整数数组是{1,2,3,4,5},所以调用下面的方法时,会返回{5,2,3,4,1})
public static int[] SwitchEnds(int[] nums){
nums[0]=(nums[0]+nums[4])-(nums[4]=nums[0]);
return nums;
}
我可以为 ArrayList 做类似的事情吗?我尝试了以下代码(之前代码的精确副本,但使用了与 ArrayList 相关的命令):
ArrayList<Integer> nums=new ArrayList<Integer>();
for (int i=1;i<=5;i++){nums.add(i);}
nums.get(0)=(nums.get(0)+nums.get(4))-(nums.get(4)=nums.get(0));
错误是第 3 行的左侧必须是一个变量。我理解这个错误,但我不知道如何纠正这个错误。
最后,我也可以对字符串数组做类似的事情吗?下面的代码说明了这个问题:
String[]a={"java","is","cool"};
a[0]=(a[0]+a[2])-(a[2]=a[0]);
return a;
(我想得到结果{"cool","is","java"}) 谢谢!
【问题讨论】:
-
请告诉我为什么你会使用该代码来交换条目,为什么你认为它更有效? 没有人会理解数组交换代码。
-
为什么不只取索引 0 和索引大小之间的差异,然后从索引 0 中减去差异,然后将其添加到索引大小中?
-
好吧,假设我有 {1,2,3,4,5......,1000},我想获得 {1000,999...,5,4,3 ,2,1},我可以创建一个 for 循环来运行 500 次。或者,我可以创建 500 个临时变量并替换;不用说,这是低效的。我是一个初学者程序员,所以这就是我所知道的;如果您知道,请提出另一种有效的方法
-
@BharadwajViswanathan:你不需要 500 个变量,你只需要一个。