Java 番石榴';s字符匹配器从

Java 番石榴';s字符匹配器从,java,performance,algorithm,jvm,guava,Java,Performance,Algorithm,Jvm,Guava,实际上这里有两个问题。第一个: 1) Java是否足够聪明,不会将一个数组元素复制到自身中 我的意思是: int i = 1; char [] chars=... //some chars char[1] = char[i]; // first element into itself 2) 番石榴向公众提供的基准是什么 我的意思是:我在研究CharMatcher removeFrom方法的源代码时发现: // This unusual loop comes from ex

实际上这里有两个问题。第一个:

1) Java是否足够聪明,不会将一个数组元素复制到自身中

我的意思是:

 int i = 1;
 char [] chars=... //some chars
 char[1] = char[i]; // first element into itself
2) 番石榴向公众提供的基准是什么

我的意思是:我在研究CharMatcher removeFrom方法的源代码时发现:

        // This unusual loop comes from extensive benchmarking
    OUT: while (true) {
            pos++;
            while (true) {
                if (pos == chars.length) {
                    break OUT;
                }
                if (isLetter(chars[pos])) {
                    break;
                }
                chars[pos - spread] = chars[pos];
                pos++;
            }
            spread++;
        }
    return new String(chars, 0, pos - spread);
我真的很喜欢这个想法,但我用自己的方法编写了代码:

    public static String removeMine(String input){
    char [] chars = input.toCharArray();
    int howManyLetters = 0;
    for(int i=0;i<chars.length;++i){
        if(isLetter(chars[i])) {
            chars[howManyLetters++] = chars[i];
        }
        else {
            if(i == (chars.length - 1)) break;
            chars[i] = chars[i+1];
        }
    }
    return new String(chars, 0, howManyLetters);
}
publicstaticstringremovemine(字符串输入){
char[]chars=input.toCharArray();
int howManyLetters=0;

对于(int i=0;对于第一个问题,我假设检查两个索引是否相同,然后决定是否复制要比简单地复制花费更长的时间。@Paŭloeberman当然,每个分支都会引入一些小延迟。