java - 构建自定义迭代器

标签 java iterator hashmap

我正在制作这个类,它是一个基于 HashMap 的自定义映射。我有一个 add 方法,如果添加一个对象,该对象将成为键,如果该对象当前不在列表中,则其值将为 1。但是,如果您添加当前在列表中的对象,其值将增加 1。因此,如果我添加 10 个完全相同的字符串,则键将是该字符串,值将是 10。我在实践中理解什么时候我遍历 map ,实际上只有一个对象要迭代,但是,我试图创建一个内部类,该内部类将定义一个迭代器,该迭代器将迭代同一对象,无论其值是多少次。我可以通过简单地使用 for 循环构造一个适当的 ArrayList 并为其创建一个迭代器来做到这一点,但这太低效了。有没有简单或更有效的方法来做到这一点?

最佳答案

您可以使用两个变量来做到这一点:

private T nextObj = null;
private int times = 0;

T next(){
    if(times==0){
        // get the next object and set the times variable to it's value in the hashmap
    }
    times--;
    return nextObj;   
}

关于java - 构建自定义迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5214043/

相关文章:

java - 为什么有ConcurrentSkipListMap,却没有非同步版本?

java - foursquare API 和 java

java - 线程 "main"java.util.ConcurrentModificationException 中的异常

c++ - cbegin()/cend() 与 constBegin()/constEnd()

java - 泛型映射 - 避免大量强制转换

java - 两个或多个(哈希)映射的联合

java - 如何为多个变量设置相同的函数属性?

java - PostgreSQL 9.0 JDBC 驱动程序是否适用于 64 位 java?

python - 如何使用 "chain"迭代器?

java - 对 HashMap 键进行排序并存储在 ArrayList 中