2011-10-26 7 views
0

StringTokenizerクラスとjava.util.Scannerクラスの違いについて質問がありますか?両方とも解剖(トークン化)目的で使用されますが。どれが使いやすく効率が良いですか?これらの2つのJavaクラスは、お互いの選択肢か別々の目的を持っていますか? JavaDocからStringTokenizerとjava.util.Scannerクラスの違いは

答えて

1

StringTokenizerはは、その使用は新しいコードに落胆しているが、互換性 の理由のために保持されているレガシークラスです。 この機能を求める人は、代わりにsplitメソッドのString またはjava.util.regexパッケージを使用することをお勧めします。

+0

私の回答で述べたように、String.splitは負荷の高いアプリケーションに関してはかなり遅いです。 StringUtils.splitは高速です。 – SirVaulterScoff

+0

私はjava.util.regex.Patternクラスの分割メソッドは、2つよりも優れていると思う – sns

+0

これは、StringUtils.splitより約10倍遅いです。 – SirVaulterScoff

1

大きな違いの1つは、Scannerは入力ストリームで操作できるため、一度にメモリに格納する必要はありません(場合によっては、ユーザー入力をコンソール)。

2
クラストークナイザ文字列は、アプリケーションが.... StringTokenizerは方法は 、識別子、数字の間で区別しないトークンに文字列 を破ることができます

StringTokenizerはJavadocのから

、および引用符で囲まれた文字列...

原始的な標準を解析することができます

単純なテキストスキャナスキャナのjavadocから

正規表現を使用して、文字列と文字列を返します。 あなたは数字をcontainigユーザー入力を解析する必要がある場合、スキャナは、いくつかのケースでは便利ですが

だから、StringTokenizerはとは異なり、スキャナはnextIntのようなメソッドを持って、nextBooleanなど は、StringTokenizerは、ほとんどの場合にorg.apache.commonsと交換することができます。 lang.StringUtils.split - 正規表現を使用せず、かなり高速です。

1

スキャナは、文字列を解析してさまざまな種類のデータを取り出す必要がある場合に使用します。ファイルのようなソースから、またはユーザからテキストデータを解析する場合は、スキャナが便利です。

StringTokenizerは常に存在していました。それは最も速いですが、列挙型のイディオムは他のイディオムほど優雅に見えないかもしれません。

JDK 1.4ではスプリットが発生しました。トークナイザよりも遅いが、使い易い。なぜなら、それはStringクラスから呼び出すことができるからである。

関連する問題