【发布时间】:2021-04-19 15:26:27
【问题描述】:
我正在使用一些 4 维和 3 维 Java 字符串数组。使用字符串数组的原因是我有多种数据类型。尽管大约 85% 的数组是 NULL,但 10% 是转换为 String 以存储在 String 数组中的 Integer,而 5% 是实际的 String。我必须非常频繁地访问这些数组以首先存储信息,然后再次访问它们进行处理。
现在在我看来,这会导致运行时间大幅增加,因为我必须处理非常大的文件,即几 GB 大小的文件。在这种情况下,还有哪些其他数据结构可以用来改善运行时间和内存?
【问题讨论】:
-
“使用字符串数组的原因是我有多种数据类型”听起来像是不使用
String[]的原因。 -
如果数组的 85% 为空,您可能需要考虑使用某种稀疏数组。
-
哪种数据结构应该用于混合数据类型? @AndyTurner
-
@MDAbidHasan 您应该使用 Object 数组并在运行时检查实例,这在空间上更有效,并且可能比将字符串解析回整数更省时。关于稀疏数组,它取决于您对数组进行的访问次数和类型。如果您需要完全随机访问,那么稀疏实现可能不适合您。
-
很可能,对您的数据一无所知......实际上任何事情......最里面的数组可能应该被具有命名和类型字段的对象替换。例如。
String[][] x = { { "John", "Doe", null, "42" }, ... }应该是Person[] x = { new Person("John", "Doe", null, 42), ... },所以每个值都可以静态类型化。