java - 在检查时向 arraylist 添加一些内容

标签 java arraylist

我需要检查“tiles”的数组列表,如果它找到一个尚未使用的图 block ,则在该图 block 周围添加 4 个图 block ,但是当我在检查列表时添加新内容时,它会崩溃。如何将对象添加到数组列表而不在检查时使其崩溃?

我添加一个图 block ,然后检查它:

private static List<Tile> tiles = new ArrayList<Tile>();



tiles.add(new Tile(mapsize/2*tilesize, mapsize/2*tilesize));

    for(Tile tile: tiles){
        if(!tile.spread){
            tile.spread=true;
            tiles.add(new Tile(tile.position.x-tilesize, tile.position.y)); //this line crashes it
        }
    }

最佳答案

迭代列表并同时修改它会导致 ConcurrentModificationException 。为了避免这种情况,您可以将新项目添加到新列表中,当您遍历完原始列表后,将两个列表合并到原始列表中。例如:

private static List<Tile> tiles = new ArrayList<Tile>();
private static List<Tile> tmpTiles = new ArrayList<Tile>();

tiles.add(new Tile(mapsize/2*tilesize, mapsize/2*tilesize));

for(Tile tile: tiles){
    if(!tile.spread){
        tile.spread=true;
        tmpTiles.add(new Tile(tile.position.x-tilesize, tile.position.y));
    }
}
tiles.addAll(tmpTiles);

关于java - 在检查时向 arraylist 添加一些内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27584608/

相关文章:

java - 迭代两个数组列表时出现问题

java - java中使用arraylist填充JTable

java - 将元素添加到 Arraylist 时出现问题。 Android 版 JSoup

java - spring中如何将JSON请求转换为特定格式的列表?

java - TextView 在 LinearLayout 中被截断

java - 二分查找实现java算法

java - Spring应用程序Thymeleaf中的css问题

java - 我想将 byte[] 转换为 float,但只有前 4 个数字是正确的

java - 如何提高我的程序速度

java - 在 Java 中不可能从这些元素的一个数组中创建一个元素数组流