0

開始パターンに基づいて、非常に国際化されたプロジェクト (すべてのラテン文字が可能) で名前のサブセットを見つける必要があります。例えば:

"more, moreover", "morse"

パターンを使用moreすると、最初の 2 つの要素が返されます。これまで、TreeSet基本的な文字列の順序付け (つまり、String-s compareTo) を使用して、次のコードでパターン マッチングを行いました。

        String end = start.substring(0, start.length()-1) + (char)(start.charAt(start.length()-1) + 1);
        SortedMap<String, Long> matching= empIndexByName.subMap(start, end);

つまり、最後の文字を次の文字に int 値で置き換え、subMap をmore,でクエリしますmorf。もちろん、ASCII以外の文字の場合は失敗します。たとえば、検索式が で終わる場合éé+1is notfです。2 つの問題は、文字列を異なる地域の異なるアルファベットと比較する必要があることと、アルファベットの次の文字をどうにかして決定する必要があることです。
自分のコードテーブルを書く以外に、基本的な Java (javase5) でこれを行う方法はありますか? (または、何か優れた国際ライブラリはありますか? ICU については既に聞いたことがあります。)

4

1 に答える 1

2

このタスクに使用する最適なデータ構造はサフィックス ツリーです。このツリーを初期化すると、特定の文字列で始まるすべての単語をすばやく見つけることができます。コーディングも比較的簡単です。

于 2011-11-30T14:05:04.717 に答える