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