关于Java:Java——调用集合中每个对象的方法的最佳方法

Java - best way to call a method of each object in a collection

本问题已经有最佳答案,请猛点这里访问。

我试着用Java制作一个2D游戏/游戏引擎。

场景中的每种对象类型都扩展了类"object",该类具有抽象方法"tick()"。此外,还有一个名为"scene"的类,它有一个包含场景中所有对象的哈希图。我希望场景调用hashmap中每个对象的方法"tick()"(每秒60次)。

1
2
3
4
5
6
7
8
9
10
11
12
public class Scene {
  private HashMap<String, Object> objs; //HashMap containing all the objects

  private void tick() {
    for(Entry<String, Object> e : objs.entrySet()) {
      Object o = e.value();
      o.tick();
    }
  }

  [...]
}

现在我想知道是否有更好、更优雅的方法来实现这一点。可以通过创建一个eventObject&eventListener,或者使用一个observable,使每个对象都成为一个观察者?


1
objs.forEach((k, v) -> v.tick());

1
2
3
for (MyOb o: objs.values()) {
    o.tick();
}

您也可以使用Java 8中的流API来实现这一点:

1
objs.values().forEach(v -> v.tick());