将对象从一个ArrayList添加到另一个ArrayList

时间:2012-01-08 12:46:09

标签: java arraylist

我有9个ArrayList,我试图将它们全部压缩成一个给定点。

目前dotGridArrayList s,searchXsearchY的矩阵,只需指定要添加到ArrayList的{​​{1}}

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]); } } } 应该有效,但事实并非如此。

我一直在努力寻找,但未能找到满意的答案。

提前致谢

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

List#add方法需要一个可以添加到List的元素。因此,如果您的dotGridArrayList s'的矩阵,则会尝试向ArrayList添加List,而不是添加List的所有元素。您应该使用addAll方法,而不是在答案中提到,但在代码中使用常规add方法

neighbours.addAll(dotGrid[searchX][searchY]);

以下代码工作得很好,说明了addAll方法

的用法
List<Integer> list = new ArrayList<Integer>( Arrays.asList( 0, 1 ) );
List<Integer> anotherList = new ArrayList<Integer>(  );
anotherList.addAll( list );