我有一组大文本文件,总共包含大约300万行。
我想要做的是从每行的给定列中提取一个值,并将其添加到内存中的数组中。如果该值已存在于数组中,则忽略它。
我假设最快的方式不是:
我应该按字母顺序插入值以加快匹配/搜索吗?
或者我应该保留多个数组...例如,每个字母的一个字母一个?
答案 0 :(得分:4)
使用Set:
Set实现无序值的集合,没有重复项。这是Array直观的互操作设施和Hash快速查找的混合体。
使用示例:
require 'set'
set = Set.new
set << 1 << 2 << 3 # => #<Set: {1, 2, 3}>
set << 2 # => #<Set: {1, 2, 3}>
答案 1 :(得分:2)
您可以将值作为键添加到哈希映射中,这样可以自动删除重复项。您甚至可以计算每个值以这种方式出现的次数(使用哈希值)。