有没有什么办法知道如果一个ArrayList中包含一段文字? [英] Is there any way to know if an arraylist contains a piece of text?
问题描述
我有几个项目的ArrayList。比方说,它们是:深棕色,蓝色,绿色,...
有没有办法来寻找是否有在我的一些项目的字符串暗?我知道,确实包含这一点,但如果字符串正是它只做。我的想法是寻找那些开始为我的项目之一的文本,但它不是全部的最后一个字符。
我在吼声像做一个循环:
的for(int i = 0; I< arraylist.size;我++){
字符串s = arraylist.get(ⅰ);
如果(s.startsWith(MYTEXT)){
做一点事
}
}
但它似乎是一个很慢的方法,因为ArrayList都包含了很多元素。任何更好的想法?
修改
只是要确认你理解我的意思。我想知道如果我的ArrayList的项目包含了一些文字开始,以获得该元素的完整文本的元素。 ArrayList.contains是一个布尔值。如果我需要获取信息,我将不得不的IndexOf左右使用,但这个功能让我空,如果我把棕色
编辑2
这是给你的auselen:
的ArrayList(5000元左右):
- 大卫的猫在他的卧室
- 我喜欢月亮
- 我想前往火星的
- 我的球是红色的
- 他们总是忘记Antarctida
- ...
我想知道是否有一个以我想开头的元素,然后检索该元素的其余部分。
这似乎是一个很慢的方法,因为ArrayList都包含了很多元素。
块引用>像,一百万?
二○一二年十一月三十○日上午10时05分20秒test.t100.t001.ArrayListSpeed主
INFO:创建条目。
二零一二年十一月三十○日上午10时05分21秒test.t100.t001.ArrayListSpeed主
INFO:搜索..
二零一二年十一月三十○日上午10时05分21秒test.t100.t001.ArrayListSpeed主
INFO:搜索'暗'333716
二零一二年十一月三十○日上午10时05分21秒test.t100.t001.ArrayListSpeed主
INFO:搜索光333333
二零一二年十一月三十○日上午10时05分22秒test.t100.t001.ArrayListSpeed主
INFO:搜索'纯'332951code
包test.t100.t001;进口的java.util.ArrayList;
进口了java.util.Random;
进口java.util.logging.Level中;
进口java.util.logging.Logger中;公共类ArrayListSpeed { 公共静态的String [] preFIX = {黑暗,淡味,平原};
公共静态的String [] COLOR = {红,绿,蓝}; 公共静态字符串的getColor(随机R){
INT VAL = r.nextInt(COLOR.length);
返回COLOR [VAL]
} 公共静态字符串获取preFIX(随机R){
INT VAL = r.nextInt(preFIX.length);
返回preFIX [VAL]
} 公共静态诠释计数prefixes(ArrayList的<串GT;列表,字符串preFIX){
诠释计数= 0;
对于(字符串VAL:名单){
如果(val.toLowerCase()。startsWith(prefix.toLowerCase())){
算上++;
}
}
返回计数;
} 公共静态无效的主要(字串[] args){
记录器记录= Logger.getAnonymousLogger();
ArrayList的<串GT;名单=新的ArrayList<串GT;();
随机R =新的随机();
logger.log(Level.INFO创建条目。);
为(中间体二= 0; II蛋白酶1000000;二++){
list.add(获得preFIX(R)+的getColor(R));
}
logger.log(Level.INFO,搜索...);
logger.log(Level.INFO,
搜索'暗'+计数prefixes(列表中,暗));
logger.log(Level.INFO,
搜索轻+计数prefixes(列表中,轻));
logger.log(Level.INFO,
搜索纯+计数prefixes(列表中,普通));
}
}I have an arraylist with several items. Let's say they are: "DARK BROWN", "BLUE", "GREEN",....
Is there any way to look for if there's the string "DARK" in some of my items? I know that contains does this but it only does if the string is exactly. My idea is to look for a text that starts as one of my items but it hasn't all the last characters.
I have thougth in do a loop like:
for(int i=0;i<arraylist.size;i++){ String s = arraylist.get(i); if (s.startsWith(mytext)){ do something } }
but it seems to be a very slow method because the arraylist can contain a lot of elements. Any better ideas?
EDIT
Just to be sure you understand my point. I want to know if an item of my arraylist contains an element that starts with some text and to get the complete text of that element. ArrayList.contains is a boolean. If I need to retrieve information I will have to use IndexOf or so but this function gives me null if I put "brown"
EDIT 2
This is for you auselen:
Arraylist (5000 elements or so):
- "David's cat is in his bedroom"
- "I like the moon"
- "I want to travel to Mars"
- "My ball is red"
- "They always forget about Antarctida"
- ...
I want to know if there's an element that starts with "I want to" and then retrieve the rest of the element.
解决方案it seems to be a very slow method because the arraylist can contain a lot of elements.
Like, a million?
Nov 30, 2012 10:05:20 AM test.t100.t001.ArrayListSpeed main INFO: Creating entries. Nov 30, 2012 10:05:21 AM test.t100.t001.ArrayListSpeed main INFO: Searching.. Nov 30, 2012 10:05:21 AM test.t100.t001.ArrayListSpeed main INFO: Searching 'dark' 333716 Nov 30, 2012 10:05:21 AM test.t100.t001.ArrayListSpeed main INFO: Searching 'light' 333333 Nov 30, 2012 10:05:22 AM test.t100.t001.ArrayListSpeed main INFO: Searching 'plain' 332951
Code
package test.t100.t001; import java.util.ArrayList; import java.util.Random; import java.util.logging.Level; import java.util.logging.Logger; public class ArrayListSpeed { public static String[] PREFIX = {"Dark ", "Light ", "Plain "}; public static String[] COLOR = {"Red", "Green", "Blue"}; public static String getColor(Random r) { int val = r.nextInt(COLOR.length); return COLOR[val]; } public static String getPrefix(Random r) { int val = r.nextInt(PREFIX.length); return PREFIX[val]; } public static int countPrefixes(ArrayList<String> list, String prefix) { int count = 0; for (String val : list) { if (val.toLowerCase().startsWith(prefix.toLowerCase())) { count++; } } return count; } public static void main(String[] args) { Logger logger = Logger.getAnonymousLogger(); ArrayList<String> list = new ArrayList<String>(); Random r = new Random(); logger.log(Level.INFO, "Creating entries."); for (int ii=0; ii<1000000; ii++) { list.add( getPrefix(r) + getColor(r) ); } logger.log(Level.INFO, "Searching.."); logger.log(Level.INFO, "Searching 'dark' " + countPrefixes(list,"dark")); logger.log(Level.INFO, "Searching 'light' " + countPrefixes(list,"light")); logger.log(Level.INFO, "Searching 'plain' " + countPrefixes(list,"plain")); } }
这篇关于有没有什么办法知道如果一个ArrayList中包含一段文字?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!