我有一个包含大约 20,000,000 个条目的列表。大约 5,000,000 个条目是唯一的。我需要遍历我的列表,识别唯一的条目,并为每个条目分配一个 0 到 5,000,000 之间的整数。
目前,我按顺序将每个条目添加到 TreeSet,然后使用 .headSet() 找出它的去向。我想这是次优的。
while((nextline = wholefile.listIterator().next()) != null){
//sorted, unique, addition
keywords.add(nextline);
//hmmm, get index of element in TreeSet?
k_j = keywords.headSet(nextline).size();
}
有没有办法在我调用 .add() 时获取位置?
最佳答案
我会简单地使用一个计数器和 HashMap<Keyword, Integer>
.对于列表中的每个关键字,从 map 中获取其位置。如果得到 null,则将关键字放入以当前计数器值作为值的映射中,并递增计数器。
关于java - 添加到 TreeSet 时记录位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11620435/