3 回答
TA贡献1851条经验 获得超3个赞
就我所知,另一个未记录的重要事情是,要求StringTokenizer返回定界符以及带标记的字符串(通过使用构造函数StringTokenizer(String str, String delim, boolean returnDelims))还可以减少处理时间。因此,如果您正在寻找性能,我建议您使用类似以下的方法:
private static final String DELIM = "#";
public void splitIt(String input) {
StringTokenizer st = new StringTokenizer(input, DELIM, true);
while (st.hasMoreTokens()) {
String next = getNext(st);
System.out.println(next);
}
}
private String getNext(StringTokenizer st){
String value = st.nextToken();
if (DELIM.equals(value))
value = null;
else if (st.hasMoreTokens())
st.nextToken();
return value;
}
尽管getNext()方法引入了开销,但会为您丢弃定界符,但根据我的基准,它仍然快了50%。
添加回答
举报