交换对象数组成员Java

时间:2016-03-24 13:57:05

标签: java arrays object swap

我正在尝试编写一个接口方法,该方法接受各种对象的数组,并根据对象的getMeasure()方法的返回来交换两个数组元素。

我的问题是当它是一个对象时如何交换两个数组元素,或者当你不知道该对象是什么时,如何存储一个临时对象的值。

到目前为止,这是我的代码:

#yourelement{
  clear:both;
  }

4 个答案:

答案 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)

首先,您要将smallestlargest进行比较(这不是您想要的),您可以找到最小和最大的一个循环。最后,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);

......它基本上做同样的事情,效率低下。