以下哪一项是反转字符串中单词的有效方法?哪些代码更有效?
public String Reverse(StringTokenizer st){
String[] words = new String[st.countTokens()];
int i = 0;
while(st.hasMoreTokens()){
words[i] = st.nextToken();i++}
for(int j = words.length-1;j--)
output = words[j]+" ";}
OR
public String Reverse(StringTokenizer st, String output){
if(!st.hasMoreTokens()) return output;
output = st.nextToken()+" "+output;
return Reverse(st, output);}
public String ReverseMain(StringTokenizer st){
return Reverse(st, "");}
而第一种方式似乎更具可读性和直接的,也有它两个循环。在第二种方法中,我尝试过使用尾递归的方法。但我不确定java是否会优化尾递归代码。
找出问题的最佳方法是分析代码并查看哪些代码运行得更快。 – NickLH
请参见http://stackoverflow.com/questions/771092/is-method-a-faster-than-method-b – paxdiablo
'StringTokenizer'不被弃用,但是... * StringTokenizer是一个遗留类,由于兼容性原因而被保留尽管它在新代码中的使用不受欢迎。建议任何需要此功能的人都使用String或java.util.regex包的拆分方法*(来自java文档) –