我有一个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
}
答案 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;
}
}