【问题标题】:ArrayList of objects vs Arraylist of HashMaps对象的 ArrayList 与 HashMaps 的 Arraylist
【发布时间】:2014-11-22 03:56:59
【问题描述】:
我有一个包含大约 10,000 个 json 转储的文件。每个 json 有大约 20 个字段,其中只有 5 个对我有用。我需要遍历文件,解析每个 json 并存储相关元素以供进一步处理。
在 Java 中,存储相关 json 字段的有效数据结构是什么。我在对象的 ArrayList(我将为此创建一个 bean 来保存各种字段)和 HashMaps 的 ArrayList(其中每个相关的 json 字段将存储为键值对)之间感到困惑。
两者在内存使用和计算方面哪个更好?
【问题讨论】:
标签:
java
json
data-structures
hashmap
【解决方案1】:
这取决于您的用例。如果您要按原样使用所有 5 个字段。就像把它放在数据库中,或者在 UI 中显示,然后是第一种方法(bean 数组)。如果您打算有选择地使用这些字段(这里 5 个字段中的 1 个,那里 5 个字段中的另一个),那么第二种方法更好(哈希映射数组)。
【解决方案2】:
Bean 列表具有更好的类型安全性和可读性。使用它,直到您可以证明该方法存在问题。
【解决方案3】:
如果您有一组固定的字段,则 Object 将小于 HashMap。
HashMap 必须将每个实例的键存储为字符串。访问对象中的字段也会更快。访问对象中的字段是单字节码操作。访问 HashMap 需要计算给定字段的哈希值,然后访问数组中的元素。
无论如何,性能可能不是这个特定问题的主要因素,使用 Object 可能更具可读性。