.contains()的优点和拆分字符串进行比较?

r3r*_*r57 1 java arrays string split

我有一个大约500 000行的文件.每一行都有以下形式:'日期#content'.我想比较一个给定日期的日期,我曾经读过每一行,.split(' # ')把它变成a String[]并将日期与之比较if(lineString[0].equals(givenDate)){...}.既然内容不包含日期,我就可以使用了if(lineString.contains(givenDate)){...}.那么有任何优点(运行时间,效率)或我应该知道的任何困难吗?

编辑: 感谢您的答案和解释..startsWith似乎是最好的解决方案.

Wil*_*sem 6

我认为最有效的方法是.startsWith.它只会将字符读取到时间格式的末尾,并且从一个字符不同的那一刻起也会中断搜索.

为什么不.split呢?

Split迭代遍历该行到结尾,这是因为它的目的是将字符串拆分为任意数量的部分,因此#字符串末尾可能存在一个字符串.

为什么不.contains呢?

同样的原因:它将继续尝试匹配字符串中的日期.此外,甚至可能在文本中间的某处存储日期,在这种情况下,您甚至可以匹配技术上不正确的行.

例如 - 这里做一个关于格式的小假设 - 如果该行读取:

20141231 # Scheduled an appointment with Tim on 20150115
Run Code Online (Sandbox Code Playgroud)

然后搜索20150115将导致匹配,虽然该行与该日期有关,但它不会在该日期发布.