我有9个ArrayList,并且我正在尝试将它们在给定的点上全部压缩为一个。

目前,dotGridArrayList的矩阵,searchXsearchY只需指定要添加到ArrayListneighbours

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);

08-07 00:30