【发布时间】:2015-02-14 23:32:53
【问题描述】:
我有一个大约 500 000 行的文件。每一行都有以下形式:'a date # content'。我想将日期与给定日期进行比较,我曾经将每一行 .split(' # ') 读入 String[] 并将日期与 if(lineString[0].equals(givenDate)){...} 进行比较。现在内容不包含日期,使用if(lineString.contains(givenDate)){...} 就足够了。那么有什么优势(运行时间、效率)或我应该知道的任何困难吗?
编辑:
感谢您的回答和解释。 .startsWith 似乎是最好的解决方案。
【问题讨论】:
-
日期的格式是什么?
-
.contains()效率更高,因为它可以提前退出,不需要额外的内存等。 -
split(" # ")遍历整个字符串,然后将其复制到多个部分,这意味着您将每行遍历两次。contains方法只遍历字符串一次,所以应该更快。 -
@JeroenVannevel:
.equals将立即退出,因为如果字符串没有以正确的字符开头,它可以退出,而.contains将继续搜索日期直到行尾. -
@CommuSoft:也就是说,如果您在真空中查看阵列中的单个条目。他仍然会遍历数组中的每一个条目。不过,当然:他们都以自己的方式提前退出。