检查字符串数组是否包含特定字符串

时间:2018-09-08 18:57:52

标签: java android arrays

我有一个字符串数组(String []words),在运行时会填充它,并包含近40万个成员。我试图检查数组是否包含特定的字符串:

boolean check=Arrays.asList(words).contains ("code");

我知道"code"已经在数组中了,但是我从来没有得到过true的检查,就好像检查过程甚至没有进行一样。我也尝试使用哈希集,但没有成功。谁能说出问题所在?

2 个答案:

答案 0 :(得分:1)

对于给定的问题,答案不是很清楚,因为这个问题还不清楚。最有可能的是,您的400K元素不包含“代码”(例如,您忘记了修剪输入,并且周围有空格/换行符)。

但是除此之外,这里还有一个独特的 non-answer :当您要搜索40万个元素时,那么您想做Arrays.asList(words).contains ("code");的想法简直是一个坏主意。

遍历400K个元素以判断一个条目是否与搜索词匹配是非常低效的。您会看到,如果只想查找一个单词,那么为什么要将所有数据存储在内存中?因此,您可能打算随着时间搜索不同个单词。每次您想迭代400K元素以判断是否存在单词?

相反:您应该投资于更合适的数据结构。那可能是一个(Hash)Set或一个(Hash)Map,甚至可能超出此范围(例如,启用了全文搜索的服务,使用Solr,ElasticSearch等)

严重:在移动设备上重复迭代400K元素不是,您的用户会喜欢的。一点也不。

答案 1 :(得分:-2)

尝试以下代码。希望对您有帮助。

boolean check = Arrays.asList(words.matches(“(.. )code(。)”)))