Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android JSONArray相当于indexOf?_Java_Android_Json - Fatal编程技术网

Java Android JSONArray相当于indexOf?

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

我有一个名为myArray的JSONObject JSONArray,在代码中的某个时刻,我检索了其中一个对象。例如:

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循环查找值的索引一样有效。它做同样的事情。