Java Android JSONArray相当于indexOf?
我有一个名为myArray的JSONObject JSONArray,在代码中的某个时刻,我检索了其中一个对象。例如:Java Android JSONArray相当于indexOf?,java,android,json,Java,Android,Json,我有一个名为myArray的JSONObject JSONArray,在代码中的某个时刻,我检索了其中一个对象。例如: JSONObject myObject = myArray.getJSONObject(x); 稍后,我想在myArray中查找myObject的索引。也就是说,我想把x拿回来 Java/Android中有indexOf方法吗 y = myArray.indexOf(myObject); // y should equal x 如果不是,我可以循环myArray并直接将my
JSONObject myObject = myArray.getJSONObject(x);
稍后,我想在myArray中查找myObject的索引。也就是说,我想把x拿回来
Java/Android中有indexOf方法吗
y = myArray.indexOf(myObject); // y should equal x
如果不是,我可以循环myArray并直接将myObject与myArray.getJSONObject进行比较,而不必比较JSONObject的每个元素。换句话说,myObject是myArray中元素的副本还是引用
谢谢。不,没有索引方法,您应该循环使用它,直到找到匹配项为止 实际上。。。java自己的ArrayList做了完全相同的事情
public int indexOf(Object o) {
if (o == null) {
for (int i = 0; i < size; i++) {
if (elementData[i] == null) {
return i;
}
}
} else {
for (int i = 0; i < size; i++) {
if (o.equals(elementData[i])) {
return i;
}
}
}
return -1;
}
我做了一个小测试,看看JSONObject和JSONArray对象的实际情况。也许文档中很清楚,但我没有看到 JSONObject和JSONArray的get方法返回引用,而不是副本。例如,我有一个JSONObject的JSONArray myArray,其中一个对象是:
myObject = myArray.getJSONObject(x);
由于myObject是对myArray中元素的引用,因此如果我修改myObject,它也会在myArray中修改
此外,我可以在数组中循环并直接比较对象,而不必比较对象中的每个元素:
for (int i = 0; i < myArray.length(); i++)
if (myarray.getJSONObject(i) == myObject)
System.out.println(i + " is equal"); // will be true when i == x
else
System.out.println(i + " is not equal");
希望这对其他人有所帮助。有一个net.sf.json.JSONArray.indexOfObject o方法,但在Android org.json.JSONArray类上没有。谢谢,但你的意思是我可以在JSONArray对象上使用ArrayList的indexOf方法吗?怎么做?我的意思是,在ArrayList中使用indoxOf方法与通过JSONArray循环查找值的索引一样有效。它做同样的事情。