我想使用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
答案 0 :(得分:2)
尝试使用HashMap<String, Integer>
(请参阅HashMap),其中每次遇到新ID时,整数都是递增计数器。您将逐字地将ID字符串映射到整数,因此从那里处理文本应该非常容易。因此,您的预期运行时间为O(n)。
或者,您也可以尝试使用String.getHashCode()
给出的哈希码。如果您有大约10000个ID,则只有1%的机会发生碰撞。如果你有更少的概率急剧下降。
由于您已经另外声明要保留排序,因此LinkedHashMap是完美的。迭代它时,顺序与插入顺序相同。