有没有什么办法知道如果一个ArrayList中包含一段文字? [英] Is there any way to know if an arraylist contains a piece of text?

查看:122
本文介绍了有没有什么办法知道如果一个ArrayList中包含一段文字?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有几个项目的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:搜索'纯'332951

code

 包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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆