我有以下类(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/