我有一个Object
s 数组。现在我的问题是如何找出对象在其中的位置?
我的对象数组
public myObject[] objects = new myObject[10];
myObject 的构造函数
public myObject(){
int objectID = 0; //Here should be the code to find the position in the array
}
使用您需要的任何相等性检查,循环遍历您的数组以查找对象的位置。
编辑:因为每个人似乎都关心.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;
}
此代码执行线性搜索以查找对象的位置。它在较大的阵列上效率不高。由于您似乎是初学者,我不会深入研究如何优化它,但请注意。
您的 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;
}
}