我正在使用org.json庫作爲我的Java應用程序的JSON客戶端,我想知道這個庫中某些方法的複雜性。getJSONObject和getJSONArray方法的複雜性是什麼?
我從數據庫通過它的HTTP API檢索另一個JSON對象(等等)內的JSON數組內的數千個JSON對象。作爲一個例子(且僅作爲一個例子,我的情況要複雜得多),假設,我做這樣的事情:
// Ignoring attributes types
import org.json.*;
public static void main(String[] args) {
response = MyHTTPClient.post(url, query).asJSON();
response = JSON.parse(response);
data = response.getJSONObject(1).getJSONArray("results").getJSONObject(0);
}
有什麼的getJSONObject(int)
複雜性和org.json庫getJSONArray(String)
的方法呢?它是以恆定的[O(1)]還是線性的[O(n)]時間運行的?如果沒有,那麼正確的答案是什麼?
所有這些都是開源的,你可以檢查它在做什麼。我認爲JSONObject是HashMap支持的,而JSONArray是ArrayList支持的,所以get *將是O(1)。 – njzk2
org.json將在您從字符串(或JSONTokener)實例化JSONObject時分析整個JSON文檔。 getJSONObject()和getJSONArray()方法只是無類型get()方法的類型化版本(它返回Object實例)。如果查看源代碼,可以看到JSONObject使用HashMap,而JSONArray使用ArrayList作爲內部表示,所以執行時間接近常量(O(1)) – erosb