从arraylist安全地删除数据

时间:2013-01-02 13:14:10

标签: java arraylist tiles-game

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

4 个答案:

答案 0 :(得分:2)

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

度Acc。致Javadocs:

  

使用指定的元素

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

答案 1 :(得分:1)

如果您要从ArrayList中移除某个项目,但仍希望其余列表保留在原位,只需将其替换为null,即授权:

myList.set(i, null);

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

答案 2 :(得分:0)

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

      tileList.set(index, newTileObject);

将使用新的tile对象替换index处的tile。将所有其他图块保留在列表中的原始位置。

答案 3 :(得分: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);