求教 Vector HashTable的问题?

懿凡 2010-04-04 03:22:49
我需要从2G(后期可能上T)大小的txt文本中提取大量的名词。将提取出来的名词放入一个容器中?请问用什么最好?
因为我需要放入的名词是不重复的。所以当我设法取得一个名词时,会查看容器中是否有这个元素,如果没有这插入。最后将这个容器中的所有元素写入结果文本txt中。
我用的Vector实现,将提取的名词用add()方法插入,在插入之前用contains()检验是否包含。因此我觉得插入和搜索查询的操作非常频繁。
请问用什么结构存储效率最高????或者有什么好的方法??
...全文
69 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
The_eagles 2010-04-04
  • 打赏
  • 举报
回复
因为要提取所有的名词,插入操作的量还是很大的。
可以考虑对名词进行分类和排序,
比如按第一个字的拼音的首字母分类,a~z 把这些名词分别放在26个容器中。
输入一个名词比较一次就可以确定在哪个容器中。
这样查找的次数要少的多,容器中存储按顺序来,查找时采用二分法。
容器的选择比较麻烦,用vector和队列的话,进行有序插入代价太大,用list 则没法实现二分查找。
采用set 或hashset 会比较快速。


hellodota121 2010-04-04
  • 打赏
  • 举报
回复
可以用set,不过不知道你的数据量有多大,容器最大容量也有限定的。
懿凡 2010-04-04
  • 打赏
  • 举报
回复
提取的是中文。。我是要从2G文本里面,提取所有的名词,放入一个容器中Vector,但是如果这个名词容器Vector中已经有了,则不放入。意思就是容器里面的名词都是非重复的。主要想知道用什么存储最好??
The_eagles 2010-04-04
  • 打赏
  • 举报
回复
英文单词还是中文单词?
The_eagles 2010-04-04
  • 打赏
  • 举报
回复
最好描述的再详细点,比如你要提取多少名词。
如果取的名词数目远远小于2G大小,那么耗时主要在于查找,
设计存储结构时主要考虑能否快速查找。

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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