我正在尝试创建一个从2d数组中删除重复项的方法。外部数组包含点索引,内部数组包含它们的坐标。看起来我必须使用arraylist来删除元素而不会在数组中以空值结束。然后我想将arraylist转换回2D数组,以便以我需要的格式返回它。问题是arraylsit包含一个对象数组,因此我无法将其转换为为浮点数设计的数组。从我的数组列表中过滤浮点数的正确语法是什么。我的代码如下:
public class rem_duplicates {
public float [][] rem_geo_duplicates(float a[][]){
ArrayList<float[]> al = new ArrayList<float[]>();
float no_points = a.length;
int count = 0;
for (int i = 0; i < no_points-1; i++){
if((a[i][0] == a[i+1][0])&&(a[i][1] == a[i+1][1])){
a[i] = null;
count ++;
}
for (int j = 0; j < no_points; j++){
if (a[j] != null){
al.add(a[j]);
}
}
//how do i get the arraylist 'al' into this array b[][]?
float b[][] = new float [a.length-count][3];
b = al.toArray();
}
}
return b
}
答案 0 :(得分:2)
尝试使用以下内容:
float b[][] = new float [a.length-count][3];
b = al.toArray(b);
这是toArray()
的通用版本,在您的情况下将返回float[][]
。请记住float[]
是一个对象,所以这里没有装箱/拆箱的问题。
我注意到您的代码存在几个基本问题 - 我建议尝试编译它并解决错误。
答案 1 :(得分:2)
如果将新创建的数组作为参数传递,它可以正常工作:
float b[][] = new float[a.length-count][];
b = al.toArray(b);