用Java创建迭代器

Gil*_*ams 4 java iterator

我有以下课程:

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();
}
Run Code Online (Sandbox Code Playgroud)

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

characters = new MapCharacters(this);
for (Character character : characters)
Run Code Online (Sandbox Code Playgroud)

怎么能实现这一目标?

Jon*_*eet 9

如果您只想迭代objectsmap,可以调用values()它,然后从该值集创建一个迭代器:

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

    ...

    @Override public Iterator<MapleMapObject> iterator() {
        return objects.values().iterator();
    }
}
Run Code Online (Sandbox Code Playgroud)