我有一个包含大约10,000个json转储的文件。每个json都有大约20个字段,其中只有5个字段对我有用。我需要迭代文件,解析每个json并存储相关元素以供进一步处理。
在Java中,存储相关json字段的高效数据结构。我在对象的ArrayList(我将创建一个用于保存各个字段的bean)和一个HashMaps的ArrayList(其中每个相关的json字段将存储为键值对)之间感到困惑。
在内存使用和计算方面,哪两个更好?
答案 0 :(得分:2)
这取决于您的使用案例。如果你打算按原样使用所有5个字段。就像把它放在数据库中,或者在UI中显示一样,然后是第一种方法(bean数组)。如果你打算有选择地使用这些字段,(这里有5个字段,另外5个字段)那么sceond方法更好(哈希映射数组)。
答案 1 :(得分:2)
豆类清单具有更好的类型安全性和可读性。使用它直到您可以证明该方法存在问题。
答案 2 :(得分:1)
如果您有一组固定的字段,则Object将小于HashMap。
HashMap必须将键存储为每个实例的字符串。访问Object中的字段也会快得多。访问Object中的字段是单字节代码操作。访问HashMap需要计算给定字段的哈希值,然后访问数组中的元素。
无论如何,性能可能不是这个特定问题的主导因素,使用Object可能更具可读性。