我有 9 ArrayList
s,我试图在某一特定点将它们全部浓缩为一个。
此时dotGrid
是 ArrayList
的矩阵s,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);
关于java - 将一个 ArrayList 中的对象添加到另一个 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8777611/