Java HashMap vs JSONObject
Je me pose des questions sur les performances de Java HashMap vs JSONObject.
Il semble JSONObject stocke les données en interne à l'aide de table de hachage. Mais JSONObject pourrait avoir d'autres frais généraux par rapport à la table de hachage.
Ne tout savoir sur les performances de Java JSONObject par rapport à la table de hachage?
Merci!
- Pouvez-vous préciser le paquet dans lequel le JSONObject vous vous référez réside ?
Vous devez vous connecter pour publier un commentaire.
Comme vous l'avez dit,
JSONObject
est soutenu par uneHashMap
.De ce fait, les performances seront presque identiques.
JSONObject.get()
ajoute une valeur null vérifier, et lève une exception si une clé n'est pas trouvée.JSONObject.put()
appelle justemap.put()
.Donc, il n'y a presque pas de frais généraux. Si vous travaillez avec des objets JSON, vous devriez toujours utilisation
JSONObject
surHashMap
.Je dirais que la question n'a pas de sens pour plusieurs raisons:
Existant réponses sont correctes, les différences de performances entre les deux sont négligeables.
Les deux sont fondamentalement plutôt inefficace méthodes de stockage et de manipulation de données. La méthode la plus efficace est généralement de se lier dans des objets Java, qui utilisent moins de mémoire et sont plus rapides d'accès. De nombreux développeurs utilisent org.json est simple (primitive) de la bibliothèque car c'est bien connu, mais il est possible de la moins pratique et efficace de rechange disponibles. Des choix comme Jackson et Gson sont de grandes améliorations de sorte qu'il est utile d'envisager de les utiliser.
JSONObject ne pas avoir trop de charge supplémentaire sur le dessus d'une table de hachage. Si vous êtes d'accord avec l'aide d'une table de hachage, alors vous devriez être bien à l'aide d'un JSONObject. C'est à condition que vous souhaitez générer du JSON.
JSONObject vérifie la validité des valeurs que vous stockez dans le cadre de votre JSONObject, pour s'assurer qu'il est conforme à la spécification JSON. Pour, par exemple, des valeurs NaN ne font pas partie de JSON valide. En dehors de cela, JSONObject peut générer des chaînes json (régulier | prettfied). Ces chaînes peuvent être assez grande, en fonction de la quantité de JSON. Aussi, JSONObject utilise StringBuffer, de sorte que l'une des nombreuses choses que je ferais serait de remplacer toutes les occurrences de StringBuffer avec StringBuilder.
JSONObject (à partir de org.json) est l'un de la simple JSON bibliothèques que vous pouvez utiliser. Si vous voulez quelque chose de très efficace, utilisez quelque chose comme Jackson.