我正在尝试编写一个接口方法,该方法接受各种对象的数组,并根据对象的getMeasure()方法的返回来交换两个数组元素。
我的问题是当它是一个对象时如何交换两个数组元素,或者当你不知道该对象是什么时,如何存储一个临时对象的值。
到目前为止,这是我的代码:
#yourelement{
clear:both;
}
答案 0 :(得分:0)
您可以使用Measurable
变量进行交换。
Measurable measurable = objects[lgIndex];
objects[lgIndex] = objects[smIndex];
objects[smIndex] = measurable;
答案 1 :(得分:0)
你知道对象是什么,它是Measurable
。因此:
//need to swap objects[lgIndex] with objects[smIndex]
Measurable temp = objects[smIndex];
objects[smIndex] = objects[lgIndex];
objects[lgIndex] = temp;
答案 2 :(得分:0)
首先,您要将smallest
与largest
进行比较(这不是您想要的),您可以找到最小和最大的一个循环。最后,swap
使用临时引用存储一个值;然后用一个未存储的值替换另一个值,最后将未修改的位置设置为临时值。像,
public static void swapMinAndMax(Measurable[] objects) {
int lgIndex = 0;
int smIndex = 0;
for (int i = 1; i < objects.length; i++) {
if (objects[i].getMeasure() > objects[lgIndex].getMeasure()) {
lgIndex = i;
}
if (objects[i].getMeasure() < objects[smIndex].getMeasure()) {
smIndex = i;
}
}
if (lgIndex != smIndex) {
Measure t = objects[lgIndex];
objects[lgIndex] = objects[smIndex];
objects[smIndex] = t;
}
}
答案 3 :(得分:0)
您担心不存在的问题。在Java中,您永远不能直接触摸对象;你只处理对象的引用。特别是,Measurable[]
是对Measurable
类型对象的引用数组。对象的数据不存在。因此,您需要交换的只是引用本身,为此您可以安全地使用与原语相同的模式:
Measurable temp = objects[i];
objects[i] = objects[j];
objects[j] = temp;
但如果你喜欢单行和一次性物品,那么你也可以这样做......
Collections.swap(Arrays.asList(objects), i, j);
......它基本上做同样的事情,效率低下。