java - 在 Java 中创建迭代器

标签 java iterator

我有以下类(class):

public abstract class MapObjects<MapleMapObject> {
    private Map map;
    private HashMap<Integer, MapleMapObject> objects;

    public MapObjects(Map map) {
        this.map = map;
        this.objects = new HashMap<>();
    }

    public void add(MapleMapObject object) {
        objects.put(map.getObjectId(), object);

        onAdd();
    }

    public void remove(MapleMapObject object) {
        onRemove();

        objects.remove(object.getObjectId());
    }

    protected abstract void onAdd();

    protected abstract void onRemove();
}

我想创建一个迭代器,以便我可以迭代从此类扩展的类。例如,如果我有一个名为 MapCharacters extends MapObjects<Character> 的类,我希望能够执行以下操作:

characters = new MapCharacters(this);
for (Character character : characters)

如何实现?

最佳答案

如果您只想迭代 objects 映射,您可以只对其调用 values(),然后从该值集创建一个迭代器:

public abstract class MapObjects<MapleMapObject> implements Iterable<MapleMapObject> {

    ...

    @Override public Iterator<MapleMapObject> iterator() {
        return objects.values().iterator();
    }
}

关于java - 在 Java 中创建迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32510074/

相关文章:

java - 在Java中的foreach循环中调用remove

由于 DFS 中的迭代器而导致 java.lang.StackOverflowError

c++ - 如何编写一个能够 foreach 的类

java - 方法错误 - 使用 Iterator 交织列表

java - TextView 不会根据 SeekBar 进度自动更新

java - 我的多线程分析

java - 在Java中,当executorservice可能向自身提交其他任务时,如何关闭它

java - 如何在java中的其他组件上添加透明矩形面板,就像我们在按下鼠标时选择任何内容一样

java - 如何在 Java JPanel 中使用 Html 颜色代码

debugging - Rust:如何在闭包参数中指定生命周期?