What is the easiest/best/most correct way to iterate through the characters of a string in Java?

前端 未结 15 1425
挽巷
挽巷 2020-11-22 11:14

StringTokenizer? Convert the String to a char[] and iterate over that? Something else?

15条回答
  •  不知归路
    2020-11-22 11:41

    If you need performance, then you must test on your environment. No other way.

    Here example code:

    int tmp = 0;
    String s = new String(new byte[64*1024]);
    {
        long st = System.nanoTime();
        for(int i = 0, n = s.length(); i < n; i++) {
            tmp += s.charAt(i);
        }
        st = System.nanoTime() - st;
        System.out.println("1 " + st);
    }
    
    {
        long st = System.nanoTime();
        char[] ch = s.toCharArray();
        for(int i = 0, n = ch.length; i < n; i++) {
            tmp += ch[i];
        }
        st = System.nanoTime() - st;
        System.out.println("2 " + st);
    }
    {
        long st = System.nanoTime();
        for(char c : s.toCharArray()) {
            tmp += c;
        }
        st = System.nanoTime() - st;
        System.out.println("3 " + st);
    }
    System.out.println("" + tmp);
    

    On Java online I get:

    1 10349420
    2 526130
    3 484200
    0
    

    On Android x86 API 17 I get:

    1 9122107
    2 13486911
    3 12700778
    0
    

提交回复
热议问题