java - 添加到 TreeSet 时记录位置

标签 java treeset

我有一个包含大约 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/

相关文章:

java - Windows 8 扭曲了我的托盘图标

java - 将构造函数与 Lambda 表达式结合使用(设置比较器)

java - 我不能在 SortedSet 中放入 null 吗?

java - 在JAVA中订购一套不重复

java - 如何为任何用户定义的类创建包装类

java - 创建 Thread 对象时设置线程的名称?

java - JSTL形式相对路径

java - 使用 sharedPreferences 的 onPause 和 onResume 方法

java - 如何删除第一个元素并使第二个元素立即成为 java.util.NavigableSet 中的第一个元素?

java - 使用比较器将列表添加到树集中