0

Javaで課題の質問があります。

サイズが GB のテキスト ファイルがあります。それを読んで、そのファイル内の各単語の出現回数を求め、[<< 単語 >> - <>] のように表示します。

最良のケースは、すべての単語が同じであることです。そのため、その単語を出現回数なしで表示しますが、ファイルに存在する単語が一意であるなどの最悪のケースを考慮します。そのため、出現回数が 1 のすべての単語を表示する必要があります。

この膨大なデータのリストをどのように処理するのですか? これに対する解決策はありますか?

4

1 に答える 1

0

理想的には、Java で Map-Reduce プログラムを作成することが、このための最良のアプローチである可能性があります。Map-Reduce パラダイムを使用したワード カウント プログラムの例を次に示します。ワード カウントの例

他のアプローチでは、再帰的な読み取り/書き込み操作を使用してこれを実行できます。マップ (アルファベットごとに 1 つのマップ) を作成して、26 のマップを使用できるようにします。開始アルファベットに応じて、適切なマップに単語を配置します。特定のマップ サイズに達したら、そのマップのすべての単語をその増分カウントと共にファイルに書き込み、そこに含まれる単語を知るための ID を付けます。ファイル (GB 単位のサイズ) からすべての単語を読み取ったら、ディスクからファイルを読み戻し、単語数を計算します。これには IO が含まれますが、メモリ関連の問題は発生しないと思います。

于 2013-03-04T12:51:09.497 に答える