我有9个ArrayList
,并且我正在尝试将它们在给定的点上全部压缩为一个。
目前,dotGrid
是ArrayList
的矩阵,searchX
和searchY
只需指定要添加到ArrayList
的neighbours
。
for(int searchX = sector[0] - 1; searchX < sector[0] + 2; searchX++){
for(int searchY = sector[1] - 1; searchY < sector[1] + 2; searchY++){
if(searchX >= 0 && searchX < 16 && searchY >= 0 && searchY < 16){
neighbours.add(dotGrid[searchX][searchY]);
}
}
}
根据我的理解,
neighbours.addAll()
应该可以,但事实并非如此。我确实一直在努力搜索,但是找不到满意的答案。
提前致谢
最佳答案
在
neighbours.add(dotGrid[searchX][searchY])
dotGrid
是一个数组。通常,您无法实例化完全限定的通用类型的数组:List<Double>[][] dotGrid = new List<Double>[n][];
会因类型错误而失败,所以我要假设
dotGrid
是部分键入的?List[][] dotGrid;
这意味着
addAll(dotGrid[searchX][searchY])
将失败,因为您试图将List
的所有元素添加到List<Double>
。理想情况下,您不要将对象数组与通用列表混合使用,而是将
dotGrid
重新定义为列表列表:List<List<List<Double>>> dotGrid;
如果那行不通,您可以尝试
@SuppressWarning("unchecked")
实例化后确保dotGrid
具有完全限定的类型,或执行类似以下操作@SuppressWarning("unchecked")
List<Double> cell = (List<Double>) dotGrid[searchX][searchY];
neighbours.addAll(cell);