Incidencia #12493

StringUtilの改善要望
Abrir Fecha: 2008-05-12 02:17 Última actualización: 2008-05-18 01:59

Informador:
Propietario:
(Ninguno)
Estado:
Open
Componente:
(Ninguno)
Hito:
(Ninguno)
Prioridad:
5 - Medium
Gravedad:
5 - Medium
Resolución:
Ninguno
Fichero:
3

Details

kidotakaと言います。

半角=>全角に部分で、半角と全角を保持する2種類のStringで
実現されていますが、あの箇所は変換用のHashMap<Character
(半角),Character(全角)>を用意して実装にした方が早いです。

StringでindexOfで位置を求めてマッピングするやり方である
と、どうしても後ろの方にある文字は遅くなりますが、
HashMapの場合はそういう劣化はほとんどありません。
2種類のStringはアルファベットを先に列挙しているので、カ
タカナは基本的に変換が遅くなる実装になってます。

メモリ的には悪化しますが、検討されてはいかがでしょうか?

あと、私が似たようなクラスを作った際、半角=>全角のマッ
ピングはプロパティに出して、staticイニシャライザで初期
化するようにしていました。
prefix.<半角のユニコード>=<全角のユニコード>
あとは念のためCollections.unmodifiableMapを用いて参照専
用の処置をするなど。

他に、
nextvalue = new Character(chars[i + 1]);
if (nextvalue.equals(new Character('゙'))) {...
} else if (nextvalue.equals(new Character('゚'))) {...
こう書いてある箇所は、オブジェクトを作らずにcharのまま
比較するべきかと思います。

Ticket History (3/5 Histories)

2008-05-12 07:59 Updated by: kidotaka
  • File 2321: StringUtil.java is attached
2008-05-12 08:02 Updated by: kidotaka
  • File 2322: StringUtil.java is attached
Comentario
Logged In: YES
user_id=31181

簡単な修正イメージとしてファイルを添付します。
2008-05-14 16:13 Updated by: kimuraku
Comentario
Logged In: YES
user_id=31940

ご要望ありがとうございます。

半角全角のマッピングに関しては、ご指摘の通り
Mapを利用するのが良いと思います。

次期バージョンアップ時には是非検討させていただきます。

今後ともTERASOLUNAをよろしくお願いいたします。
2008-05-14 16:14 Updated by: kimuraku
Comentario
Logged In: YES
user_id=31940

ご要望ありがとうございます。

半角全角のマッピングに関しては、ご指摘の通り
Mapを利用するのが良いと思います。

次期バージョンアップ時には是非検討させていただきます。

今後ともTERASOLUNAをよろしくお願いいたします。
2008-05-18 01:59 Updated by: kidotaka
  • File 2328: StringUtil.java is attached
Comentario
Logged In: YES
user_id=31181

未テストで思い切りバグらせてましたが、
既存のテストケースを実施して動く状態にしてみました。

Attachment File List

  • StringUtil.java(29KB)
    • 修正イメージ(未テスト、プロパティ実装なし)
  • StringUtil.java(29KB)
    • 修正イメージ(未テスト、プロパティ実装なし)
  • StringUtil.java(29KB)
    • 修正イメージ(テスト済み(既存テストケースのみ)、プロパティ実装なし)

Editar

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Entrar