Is there any way to know if an arraylist contains a piece of text?

前端 未结 5 1455
执笔经年
执笔经年 2021-01-15 11:35

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

5条回答
  •  既然无缘
    2021-01-15 12:16

    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 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 list = new ArrayList();
            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"));
        } 
    }
    

提交回复
热议问题