比较数组中对象的变量?

时间:2011-07-16 21:15:04

标签: java arrays object compare

我在Java中有一个对象数组。说这些对象Obj包含一个变量var,我有几个Obj存储在数组Array []。

我想比较两个相邻的Obj之间的var,但我不知道怎么样,也不能在网上找到任何信息(这让我觉得我的问题是错误的,或者它不可行或者什么)< / p>

编辑:

我目前正在尝试将相关数组对象分配给新临时对象而只是进行比较的相当迂回的方法:

Obj o1 = o[i];
Obj o2 = o[i+1];

if (o1.var > o2.var)
//etc

但肯定有更好的东西。

4 个答案:

答案 0 :(得分:1)

根据你的编辑,可以说

if (o[i].var > o[i+1].var) { ... }

假设o的类型为Obj[]

但是,我很好奇:你是否试图对数组进行排序?如果是这样,你可以使用Arrays.sort()(如果没有,这是一个很好的方法来了解。)

答案 1 :(得分:1)

我可能无法正确理解您的问题,但以下内容完全有效:

if (o[i].var > o[i+1].var )  { // ...etc... }

小心你何时到达阵列的末尾!也就是说,如果你循环遍历所有元素并且i是最后一个元素,那么o[i+1]会给你一个数组索引超出界限的错误!

答案 2 :(得分:1)

如果您有一个对象数组,则可以在不创建临时引用的情况下进行比较:

MyObject[] arr = //populated somehow
for (int index = 0; index < arr.length - 1; index++) {
  if (arr[index].var > arr[index + 1].var) {
    //your logic
  }
}

您可能还需要查看Comparable接口,以便根据特定字段封装对象的比较。使用此界面可以让您利用Collections API中的支持。

答案 3 :(得分:0)

只需在没有引用的情况下直接使用它们,即将数组查找替换为您进行比较的位置。

if (o[i].var > o[i+1].var) {
    // etc
}

或者在一个循环中,以编程方式执行每一个:

for (int i=0; i<o.length-1; i++) {
    if (o[i].var > o[i + 1].var) {
        // etc
    }
}