1

我有一个数组列表,其中包含瓷砖。当我放下新瓷砖时,新瓷砖会放在旧瓷砖上,但旧瓷砖仍然在那里,可能会导致问题。例如,有一块玩家无法穿过的石块。在那里放置了一块空气砖,据说可以让玩家穿过。但是,石块永远不会被删除,因此玩家无法通过,因为石块是实心的并会导致碰撞。我可以从数组列表中删除磁贴吗?我不认为我可以,因为列表中的其余数据将“移动”并填补旧瓷砖曾经所在的洞。我怎样才能删除磁贴并在其上放置一个新磁贴而不导致其余数据移动?

4

4 回答 4

2

您应该使用set(int index, E element)ArrayList 的方法。

会计。到 Javadocs:

将此列表中指定位置的元素替换为指定元素

于 2013-01-02T13:18:58.060 回答
1

如果您想从 an 中删除一个项目ArrayList并且仍然希望列表的其余部分保持原位,只需将其替换为null,这是授权的:

myList.set(i, null);

当然,这意味着您必须在使用它时测试该值。

于 2013-01-02T13:15:40.677 回答
0

您可以使用 ArrayList 的 set() 方法将列表中的一个对象“替换”为另一个对象。

      tileList.set(index, newTileObject);

将用新的平铺对象替换索引处的平铺。将所有其他图块留在列表中的原始位置。

于 2013-01-02T13:18:12.747 回答
0

使用Tile带有枚举的对象来存储其状态:

public class Tile {

  public enum State = { WALL, OPEN };

  private State state;

  public void setState(State state) {
    this.state = state;
  }
}

当你需要在开放空间和墙壁之间交换时,你只需改变它的状态:

tile.setState(State.WALL);
于 2013-01-02T13:19:37.967 回答