2016-10-05 125 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

相关问题