【发布时间】:2017-02-03 11:10:17
【问题描述】:
我有一个大文本文件(大约 2000 万行),其中包含以下格式的行:
<string1>, <string2>
现在这些字符串可能有尾随或前导空格,我想在读取文件时删除这些空格。
我目前正在为此使用trim(),但由于Java 中的String 是不可变的,trim() 正在为每个修剪操作创建一个新对象。
这会导致过多的内存浪费。
我怎样才能做得更好?
【问题讨论】:
-
请说明您是如何读取文件然后拆分字符串的。
-
您确实意识到所有未使用的字符串都会被收集,因此没有真正的浪费内存,只有新创建的对象(由 GC 有效收集)。
-
我不太确定,但我认为使用sed 可以解决问题
-
显示你用来读取文件的代码;几乎完全可以肯定,trim() 不会成为主要的内存瓶颈。
-
用逗号分隔符分割你的字符串,然后,使用 StringBuilder 附加每个字符串。所以每次都不会像你说的那样创建字符串。