【发布时间】:2012-11-18 03:14:47
【问题描述】:
我有一个包含多个项目的数组列表。假设它们是:“深棕色”、“蓝色”、“绿色”、....
有什么方法可以查找我的某些项目中是否有字符串“DARK”?我知道 contains 会这样做,但只有在字符串完全正确的情况下才会这样做。我的想法是寻找一个以我的项目之一开头但没有最后一个字符的文本。
我想像这样循环:
for(int i=0;i<arraylist.size;i++){
String s = arraylist.get(i);
if (s.startsWith(mytext)){
do something
}
}
但它似乎是一个非常慢的方法,因为 arraylist 可以包含很多元素。有更好的想法吗?
编辑
只是为了确保您理解我的观点。我想知道我的数组列表中的一个项目是否包含一个以某些文本开头的元素并获取该元素的完整文本。 ArrayList.contains 是一个布尔值。如果我需要检索信息,我将不得不使用 IndexOf 左右,但如果我输入“棕色”,这个函数会给我 null
编辑 2
这是给你的 auselen:
Arraylist(5000个元素左右):
- “大卫的猫在他的卧室里”
- “我喜欢月亮”
- “我想去火星旅行”
- “我的球是红色的”
- “他们总是忘记南极”
- ...
我想知道是否有一个以“I want to”开头的元素,然后检索该元素的其余部分。
【问题讨论】:
-
“但这似乎是一个非常缓慢的方法,因为..” ..分析器表明这是瓶颈发生的地方。 (大约是该句子唯一有效的结尾。)
-
最适合我认为您正在做的事情的数据结构是 prefix tree,即所谓的 trie。
-
对 i 也是正确的,下面说 trie 是最好的,但是你有几百万字吗?没有然后看我的回答
-
对数组列表进行排序并使用某种分治法搜索
-
有多少个字符串?
标签: java arrays string arraylist contains