2016-10-05 8 views
1

JSONArrays内でJSONObjectを大量に解析して操作する私の古いコードをリファクタリングしています。 JSONObjectをArrayListsに格納するのが効率的かどうかを知りたいです。また、UpdateとInsertの操作でほとんどのパフォーマンスを得るために、どのCollectionを使うべきかについての提案が必要です。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が最も高速です。これにより、JSONArraysではなくJSONObjectでArrayDequeを使用するのが最も効率的な方法です。

+0

しかし、なぜ "ArrayListとJSONArrayの間に大きな違いはありません"と言って自分自身と矛盾しているのですか?また、 "ArrayDequeを使用するのが最も効率的な方法ですJSONArraysの代わりにJSONObjectを使用しています。 "私はちょっと混乱しています。 – Mohanavel

+0

ArrayDequeはJSONObjectsで使用すると言いました。 ArrayListと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); 

がリンクありdoc: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

関連する問題