Java字符串数组的性能替代方案
我正在使用一些4维和3维Java字符串数组。使用字符串数组的原因是我混合了多种数据类型。虽然大约85%的数组为空,但10%是转换为字符串以存储在字符串数组中的整数,5%是实际字符串。我必须非常频繁地访问这些数组,首先存储信息,然后再次访问它们进行处理 现在在我看来,这导致了运行时间的大幅增加,因为我必须处理非常大的文件,大小只有几GB的文件。在这种情况下,还有什么其他数据结构对提高运行时间和内存非常有用Java字符串数组的性能替代方案,java,arrays,string,Java,Arrays,String,我正在使用一些4维和3维Java字符串数组。使用字符串数组的原因是我混合了多种数据类型。虽然大约85%的数组为空,但10%是转换为字符串以存储在字符串数组中的整数,5%是实际字符串。我必须非常频繁地访问这些数组,首先存储信息,然后再次访问它们进行处理 现在在我看来,这导致了运行时间的大幅增加,因为我必须处理非常大的文件,大小只有几GB的文件。在这种情况下,还有什么其他数据结构对提高运行时间和内存非常有用 使用字符串数组的原因是我混合了多种数据类型 听起来像是不使用字符串[]的理由 假设您将int
使用字符串数组的原因是我混合了多种数据类型 听起来像是不使用
字符串[]
的理由
假设您将int
存储为字符串
,则存储:
- 许多
字符
char
- 类似于
hashCode
int
存储在整数中,则存储:
int
还有其他一些开销,但是int
占用了2char
s的空间。因此,String
是存储大多数非空数据的一种非常低效的方法
如果必须,将内容存储在Object
数组中,该数组可以同时保存String
和Integer
实例,然后在使用元素之前检查元素的类型
如果你的数组中的85%真的是NULL,你应该考虑使用某种稀疏数组。
“使用字符串数组的原因是混合了数据类型”听起来像是不使用<代码>字符串[]/COD>的原因。如果数组的85%是空的,您可能需要考虑某种稀疏数组,应该使用哪种数据结构来混合数据类型?@AndyTurner@MDAbidHasan您应该使用一个对象数组,并在运行时检查实例,这比将字符串解析回整数在空间上更有效,而且可能更省时。关于稀疏数组,它取决于您对数组执行的访问的数量和类型。如果您需要完全随机访问,那么稀疏实现可能不适合您。。。真的吗。。。关于您的数据,最里面的数组可能应该被具有命名和类型化字段的对象替换。例如,String[]]x={{“John”,“Doe”,null,“42”},…}
应该是Person[]x={new Person(“John”,“Doe”,null,42),…}
,所以每个值都可以静态键入。感谢您的回答。在这种情况下,你能给我一个稀疏数组的例子吗?