次のうちどれが文字列の単語を逆にする効率的な方法ですか?どのコードがより効率的ですか?
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, "");}
最初の方法は、より読みやすく、まっすぐ進むと思われる一方で、その内の2つのループがあります。 2番目の方法では、私はtail-recursiveな方法でそれをやってみました。しかし、javaがtail-recursiveコードを最適化するかどうかはわかりません。
ベストプラクティスを見つけるには、コードをプロファイリングしてより速く実行する方法があります。 – NickLH
http://stackoverflow.com/questions/771092/is-method-a-faster-than-method-b – paxdiablo
'StringTokenizer'は推奨されていませんが、* StringTokenizerは互換性の理由から保持されるレガシークラスです新しいコードではその使用は推奨されません。この機能を探している人は、splitメソッド(Stringまたはjava.util.regexパッケージ)を使用することをお勧めします。*(java docsから) –