从Arraylist中获取浮动而不是对象

时间:2011-12-11 16:45:28

标签: java arrays arraylist indexing duplicates

我正在尝试创建一个从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
}

2 个答案:

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