Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java字符串数组的性能替代方案_Java_Arrays_String - Fatal编程技术网

Java字符串数组的性能替代方案

Java字符串数组的性能替代方案,java,arrays,string,Java,Arrays,String,我正在使用一些4维和3维Java字符串数组。使用字符串数组的原因是我混合了多种数据类型。虽然大约85%的数组为空,但10%是转换为字符串以存储在字符串数组中的整数,5%是实际字符串。我必须非常频繁地访问这些数组,首先存储信息,然后再次访问它们进行处理 现在在我看来,这导致了运行时间的大幅增加,因为我必须处理非常大的文件,大小只有几GB的文件。在这种情况下,还有什么其他数据结构对提高运行时间和内存非常有用 使用字符串数组的原因是我混合了多种数据类型 听起来像是不使用字符串[]的理由 假设您将int

我正在使用一些4维和3维Java字符串数组。使用字符串数组的原因是我混合了多种数据类型。虽然大约85%的数组为空,但10%是转换为字符串以存储在字符串数组中的整数,5%是实际字符串。我必须非常频繁地访问这些数组,首先存储信息,然后再次访问它们进行处理

现在在我看来,这导致了运行时间的大幅增加,因为我必须处理非常大的文件,大小只有几GB的文件。在这种情况下,还有什么其他数据结构对提高运行时间和内存非常有用


使用字符串数组的原因是我混合了多种数据类型

听起来像是不使用
字符串[]
的理由

假设您将
int
存储为
字符串
,则存储:

  • 许多
    字符
  • char
  • 类似于
    hashCode
而如果将
int
存储在
整数中,则存储:

  • int
还有其他一些开销,但是
int
占用了2
char
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),…}
,所以每个值都可以静态键入。感谢您的回答。在这种情况下,你能给我一个稀疏数组的例子吗?