问一个数据结构的问题

bentu610 2008-09-09 09:26:45
假设有m个文本文件和n个单词,
要统计这n个单词在每个文件中
出现的次数,直观的存储结构
是开一个n×m的数组, 但当n,m
很大的时候,存储效率很低,
而且可以确定是一个稀疏矩阵。
我想问一下除了用List之类的
动态申请空间的方法外还有什么
好的统计方法?最好是用数组实现
...全文
114 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
fulianglove 2008-09-09
  • 打赏
  • 举报
回复
关注!!
冰思雨 2008-09-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 bentu610 的回复:]
建m个map不是一个明智的方法吧,因为m,n都很大,而且不断增大
[/Quote]
我只是给你出个主意而已,也可以看成一种提示,具体情况,要看实际情况而定的。
你要是觉得一次建m个,需要太大的内存,可以采用其他方式。

如果m个文件中,n个单词的命中率很低的话,你可以用一个HashMap来存储每个文件中单词个数的HashMap。
也就是说,先建一个HashMap<文件名称,单词命中数的HashMap>,然后扫描文件的时候再建 单词命中数的HashMap<单词名称,出现的个数>。
根据实际情况,如果某个文件,连一个单词都没有命中,那就不要创建 单词命中数的HashMap

如果m和n的个数都很大,并且m个文件中,n个单词的命中率都很高,那么,可以自己创建一个键值对的类,每当扫描完一个文件后,
就把单词命中数的HashMap 放入键值对的对象,然后写入硬盘(就是创建一个硬盘文件,然后往里面写数据)。
需要扫描结果的时候,再从硬盘中读取就可以了。

最后,需要主意的是,大小的确定。
其实对于电脑来说,上万的数据量,根据实际内存的大小,有时候并不是很大的数据量的。
要看实际情况来决定。
bentu610 2008-09-09
  • 打赏
  • 举报
回复
建m个map不是一个明智的方法吧,因为m,n都很大,而且不断增大
Transient1984 2008-09-09
  • 打赏
  • 举报
回复
hashmap
冰思雨 2008-09-09
  • 打赏
  • 举报
回复
m个HashMap<单词名称,出现的个数>,每个HashMap对应一个文件。
super_marshal 2008-09-09
  • 打赏
  • 举报
回复
class Key
{
String filename;
String word;
public boolean equals(object o)
{
if(!(o instanceof Key))
return false;
return ((Key)o).filename&&((Key)o).word.equals(word);
}
}
HashMap<Key,Integer> statistics;
bentu610 2008-09-09
  • 打赏
  • 举报
回复
楼上能不能讲得具体一点,谢谢
Sou2012 2008-09-09
  • 打赏
  • 举报
回复
哈希map
justinavril 2008-09-09
  • 打赏
  • 举报
回复
HashMap...
getter 2008-09-09
  • 打赏
  • 举报
回复
請問有沒有hashmap的基礎原理知識

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧