Java HashMap与JSONObject

use*_*585 33 java json hashmap

我想知道Java HashMap与JSONObject的性能.

似乎JSONObject使用HashMap在内部存储数据.但是与HashMap相比,JSONObject可能会有额外的开销.

有没有人知道Java JSONObject与HashMap相比的性能?

谢谢!

jjn*_*guy 43

正如你所说,JSONObject有一个支持HashMap.

因此,性能几乎相同. JSONObject.get()添加空检查,如果找不到密钥则会抛出异常. JSONObject.put()只是打电话map.put().

所以,几乎没有开销.如果你正在处理JSON对象,你应该总是使用JSONObjectHashMap.

  • 实际上我不同意这一点 - 因为JSONObject特定于一个库,与Maps不同,将它作为一种类型公开会增加对特定库及其数据类型的更多耦合.所以我不会断然说它应该永远使用. (8认同)

z5h*_*z5h 7

我想说这个问题没有意义,原因如下:

  1. 比较苹果和橙子:HashMap和JSONObject用于两个完全不同的目的.这就像问"Person类或公司类是否更有效地存储PhoneNumber对象".使用有意义的东西.
  2. 如果您要转换为/从JSON转换,您可能会将数据发送到远方(如用户的浏览器).通过网络发送此数据并在用户的浏览器中对其进行评估所花费的时间(可能)远远超过填充Hashmap或JSONObject的任何性能差异.
  3. 有超过1个"JSONObject"实现在那里浮动.
  4. 最后,您还没有询问要测量的性能类型.你实际上打算用这些课程做什么?


Sta*_*Man 5

现有答案是正确的,两者之间的性能差异可以忽略不计。

两者基本上都是相当低效的存储和操作数据的方法。更有效的方法通常是绑定到常规 Java 对象中,这些对象使用更少的内存并且访问速度更快。许多开发人员使用 org.json 的简单(原始)库,因为它是众所周知的,但它可能是最不方便和最有效的替代方案。像 Jackson 和 Gson 这样的选择是很大的改进,所以值得考虑使用它们。