如果你很好奇,这是实施:
public int countTokens() {
int count = 0;
int currpos = currentPosition;
while (currpos < maxPosition) {
currpos = skipDelimiters(currpos);
if (currpos >= maxPosition)
break;
currpos = scanToken(currpos);
count++;
}
return count;
}
Run Code Online (Sandbox Code Playgroud)
我不太熟悉StringTokenizer,但假设maxPosition可以改变(它看起来可以),那么它不是恒定的时间.你还必须考虑到skipDelimiters和的复杂性scanToken.