数组中的对象位置

时间:2013-07-19 14:40:29

标签: java arrays

我有一个Object的数组。现在我的问题是如何找出对象所处的位置?

我的对象数组

public myObject[] objects = new myObject[10];

myObject的构造函数

public myObject(){
    int objectID = 0; //Here should be the code to find the position in the array
}

2 个答案:

答案 0 :(得分:3)

使用您需要的任何相等检查,遍历数组以查找对象的位置。

编辑: 由于每个人似乎都对.equals vs ==感到担心,我已经改变了例行程序。如果您要检查引用相等性,请使用findValue(ary, obj, true),否则请使用findValue(ary, obj, false)

这将找不到空值。如果myObject为空,我建议在这里抛出异常,但我会把这个决定留给你。

public int findValue(Object[] objects, Object myObject, boolean equalityCheck){
    for(int i=0;i<objects.length;i++){
        if(equalityCheck){
            if(objects[i] == myObject){
                return i;
            }
        }else{
            if(objects[i]!=null && myObject!=null && objects[i].equals(myObject)){
                return i;
            }
        }
    }
    return -1;
}

此代码执行线性搜索以查找对象的位置。它在大型阵列上效率不高。由于您似乎是初学者,我不打算深入研究如何优化这一点,但请注意。

答案 1 :(得分:1)

你的类MyObject应该有一个获取数组的方法并返回idx

class MyObject {
   public int findIdx(MyObject[] myObjects) {
        if (myObjects != null) {
            for (int i = 0; i <= myObjects.length; i++) {
                if (myObjects[i].equals(this)) {
                    return i;
                }
            }
        }
        return -1;
    }
}