Ticket #12493

StringUtilの改善要望
Eröffnet am: 2008-05-12 02:17 Letztes Update: 2008-05-18 01:59

Auswertung:
Verantwortlicher:
(Keine)
Status:
Offen
Komponente:
(Keine)
Meilenstein:
(Keine)
Priorität:
5 - Mittel
Schweregrad:
5 - Mittel
Lösung:
Keine
Datei:
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-Verlauf (3/5 Historien)

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

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

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

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

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

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

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

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

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

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

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

Dateianhangliste

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

Bearbeiten

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