2016-10-05 84 views
1

我正在重構我的舊代碼,這涉及JSONArrays中大量的數據解析和JSONObjects操作。我想知道將JSONObjects存儲在ArrayLists中是否有效。我還希望在更新和插入操作上使用什麼集合來獲得大多數性能方面的建議?ArrayList <JSONObject> vs JSONArray

+0

JSONArray內部使用ArrayList。它僅僅是ArrayList的封裝。 Src:http://stackoverflow.com/a/14384131/4195825 – px06

回答

-1

JSONArray在內部使用ArrayList,所以它就像ArrayList上的包裝一樣。我會說,ArrayList和JSONArray之間沒有顯着的區別。 JSONObject在內部使用HashMap。

對於集合,ArrayDeque是最快的,通過這種方法最有效的方式是使用ArrayDeque和JSONObject而不是JSONArrays。

+0

兄弟,但你爲什麼矛盾說「ArrayList和JSONArray之間沒有顯着差異」,並且還說「最有效的方法是使用ArrayDeque與JSONObject而不是JSONArray「我現在有點困惑 – Mohanavel

+0

我說使用ArrayDeque與JSONObjects,因爲它是最快的集合。如果你使用ArrayList vs JSONArray沒有區別。 –

+0

是否有任何描述ArrayDeque比ArrayList更快的源代碼或任何背後的邏輯,請解釋或給我一些來源。我曾問過這個問題,因爲大多數人都說過這樣比較好,而且更好,但沒有人給出正確的解釋。 – Mohanavel

0

我認爲最好的方法是用傑克遜ArrayNode和其他有用的東西從那裏:

Maven的依賴

<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-databind</artifactId> 
    <version>2.8.3</version> 
</dependency> 

守則開始:

ArrayNode jsonArray = new ObjectMapper().createArrayNode(); 
ArrayNode jsonArray = new ObjectMapper().createArrayNode(); 
jsonArray.addPOJO(myObject); 
jsonArray.add(232); 
jsonArray.add("Hi Stack"); 
jsonArray.add(anotherJsonArray); 

這裏是鏈接到文檔:http://fasterxml.github.io/jackson-databind/javadoc/2.0.0/com/fasterxml/jackson/databind/node/ArrayNode.html

+0

請添加一個源代碼,說ArrayNode更快謝謝! – Mohanavel

+0

如果您使用ArrayNode#add(...)方法重載的值,您將能夠感受到性能差異。在這種情況下,將不會有類別投射,這通常需要很長時間。 JSONObject接受所有類型爲Object,當您使用它時,會執行很多類轉換。 但是,如果您只需要存儲一些POJO,我相信在性能上不會有如此明顯的差異。 ArrayNode將爲您提供比其他方式更多的功能。 – eGoLai

相關問題