-2

ドキュメントからトークンを抽出し、配列に挿入しました。今私が欲しいのは、ドキュメントにトークンが表示される回数を決定することです。

私が考えている現在のアルゴリズムは、各トークンを取得し、トークンの配列全体をスキャンして類似のトークンを見つけます。これは、あまりスケーラブルではないと推測したとおりです。

この問題を解決するのに役立つ他の優れたアルゴリズムを探していました。

SO について同様の質問がいくつかありますが、それらはすべて、コンパイル時にトークンが提供されることを前提としています。

4

5 に答える 5

3

文字列 (トークン) と整数 (カウント) の id を持つマップ/ハッシュマップを使用します。

必要なロジックは次のとおりです。

すべてのトークンについて:

トークンが存在する場合は、トークン ID でオブジェクトをフェッチしてカウントをインクリメントし、トークン
が存在しない場合は古いトークンを置き換え、トークンをマップに追加し、整数値を 1 に設定します。

于 2013-08-29T15:52:27.320 に答える
1

この回答はJava用です

sはトークンで、はカウントですHashMap<String,Integer>。リスト内の各要素について、マップに既に存在するかどうかを確認する必要があります。そうでない場合は、値で新しいキーを作成します。すでに存在する場合は、(count) を 1 増やします。SortedMap<String,Integer>keyvalue1value

HashMap<String,Integer> counts= new HashMap<String,Integer>() ;
for(String e: myTokenList ) {
    if( counts.get(e) == null )
        counts.put(e,1);
    else
        counts.put(e,counts.get(e)+1);
}

考えられるマイクロ最適化があります。

HashMap<String,Integer> counts= new HashMap<String,Integer>() ;
for(String e: myTokenList ) {
    Integer c= counts.get(e) ;
    if( c == null )
        counts.put(e,1);
    else
        counts.put(e,c+1);
}
于 2013-08-29T15:53:21.317 に答える