Java - 在ArrayList中访问原始类型的对象

时间:2017-01-07 11:17:45

标签: java arraylist types

我正在使用双数组,需要能够计算类Tile中一个图块的周围&lt; 8个邻居。由于我想单独了解它们,Tile包含8个setter方法,它们分别接受Tile作为每个方向的参数。所以首先我迭代一个给定图块的邻居并将它们添加到ArrayList。现在我想将这些元素传递给setter-methods但他们不接受它,因为它不是Tile而是List<Tile> 我该如何解决这个问题?我尝试更改setter-Method以期望List,但这并没有改变任何东西。或者我可能需要重构我的整个方法?为此,我正在看一个肯定有所有8个邻居的瓷砖,我需要考虑抓住边缘的人,一旦这种情况起作用,就没有那么多的邻居。

private void calculateNeighbors (int x, int y){
    System.out.print("The neighbors of " + getTile(x,y));

    List<Tile> neighbors = new ArrayList<>();

    int[] coordinates = new int[]{
            -1,-1, 
            -1, 0,
            -1, 1,
            0,-1,
            0, 1,
            1,-1,
            1, 0,
            1, 1
    };

    for (int i = 0; i < coordinates.length; i++) {
        int columnX = coordinates[i];
        int rowY = coordinates[++i];

        int nextX = x + columnX;
        int nextY = y + rowY;

        if (nextX >= 0 && nextX < getListOfTiles().length
                && nextY >= 0 && nextY < getListOfTiles().length) {
                neighbors.add(getTile(nextX, nextY));
        }
    }
    //this here isn't working
    tile.setTopLeft(neighbors[0]);
    tile.setTop(neighbors[1]);
    //etc
    }
}

1 个答案:

答案 0 :(得分:1)

您需要使用列表的get(int)方法根据索引访问列表中的对象。

tile.setTopLeft(neighbors.get(0));
tile.setTop(neighbors.get(1));

下标运算符就是你有一个数组。