小编典典

交换原语的Java方法

java

如果没有可以通过引用传递的方法,如何在java中使我的交换函数有效?有人可以给我一个密码吗?

swap(int a, int b)
{
     int temp = a;
     a = b;
     b = temp;
}

但是,由于Java通过值传递参数,因此更改不会被反映回来。


阅读 575

收藏
2020-03-09

共2个答案

小编典典

你无法创建方法交换,因此在调用swap(x,y)x和y之后将被交换。你可以通过交换可变内容的内容¹来创建此类方法,但这不会更改其对象标识,因此你无法为此定义通用方法。

但是,你可以编写一种方法来交换数组或列表中的两个项目(如果需要的话)。

¹例如,你可以创建一个包含两个列表的交换方法,执行该方法后,列表x将具有列表y的先前内容,列表y将具有列表x的先前内容。

2020-03-09
小编典典

认为这是最接近简单交换的方法,但是它没有简单的用法模式:

int swap(int a, int b) {  // usage: y = swap(x, x=y);
   return a;
}

y = swap(x, x=y);

它依赖于以下事实:x将传递到swap之前y被分配给x,然后x返回并分配给y

你可以使其通用并交换任意数量的相同类型的对象:

<T> T swap(T... args) {   // usage: z = swap(a, a=b, b=c, ... y=z);
    return args[0];
}

c = swap(a, a=b, b=c)
2020-03-09