每次从文件中读取一定大小的词,统计词频保存到一个哈希表中。然后遍历这个哈希表,把词频作为值,词语作为键,逐个插入小根堆。如果堆大小超过N,则移除堆顶最小的元素。...算法实现
基于小根堆,可以设计一个内存受限的词频统计算法:
初始化大小为N的小根堆,用于保存topk结果import java.io.*;
import java.util.*;
public class...最后遍历堆构建结果列表。可以控制每批次处理数据量,保证内存不超限。...总结本文针对内存受限环境下的大文件Top N词频问题,给出一种基于堆结构与外部排序的解决方案,主要有以下优点:import java.io.*;
import java.util.*;
public class...逐批从文件中读取一定行数的词,统计到哈希表F中
遍历F,将词频作为值,词语作为键,插入小根堆
堆大小超过N,则移除堆顶最小元素
重复步骤2-4,直到文件读完
堆中的N个元素即为全局topk结果