将String值映射到大型文件的Integer

时间:2013-10-21 18:07:38

标签: java map

我想使用java代码将文本文件中的用户ID映射到唯一的整数值。 我有一个大约50MB的大文本文件,这样做传统的方式将花费我很多时间 例如

     3245 4567
      3245 8726
      4567 8363
      4567 7363
      4567 5267 etc
  After mapping I want my output file to look like
     1 2
     1 3
     2 4
     2 5
     2 5

1 个答案:

答案 0 :(得分:2)

尝试使用HashMap<String, Integer>(请参阅HashMap),其中每次遇到新ID时,整数都是递增计数器。您将逐字地将ID字符串映射到整数,因此从那里处理文本应该非常容易。因此,您的预期运行时间为O(n)。

或者,您也可以尝试使用String.getHashCode()给出的哈希码。如果您有大约10000个ID,则只有1%的机会发生碰撞。如果你有更少的概率急剧下降。

由于您已经另外声明要保留排序,因此LinkedHashMap是完美的。迭代它时,顺序与插入顺序相同。