-4

我有一个Objects 数组。现在我的问题是如何找出对象在其中的位置?

我的对象数组

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

myObject 的构造函数

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

2 回答 2

3

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

编辑:因为每个人似乎都关心.equals==已经改变了执行的例程。如果您正在检查引用相等性,请使用findValue(ary, obj, true),否则使用findValue(ary, obj, false)

这不会找到空值。如果为 null,我建议在此处抛出异常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;
}

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

于 2013-07-19T14:41:34.907 回答
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;
    }
}
于 2013-07-19T15:07:28.110 回答