我有一个字符串数组(String []words
),在运行时会填充它,并包含近40万个成员。我试图检查数组是否包含特定的字符串:
boolean check=Arrays.asList(words).contains ("code");
我知道"code"
已经在数组中了,但是我从来没有得到过true的检查,就好像检查过程甚至没有进行一样。我也尝试使用哈希集,但没有成功。谁能说出问题所在?
答案 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(。)”)))