получать поплавки, а не объекты из Arraylist - PullRequest
0 голосов
/ 11 декабря 2011

Я пытаюсь создать метод, который удаляет дубликаты из 2d массива. внешний массив содержит индексы точек, а внутренний массив содержит их координаты. Похоже, я должен использовать arraylist для удаления элементов, не заканчивая нулевыми значениями в массиве. Затем я хотел бы преобразовать массив обратно в двумерный массив, чтобы вернуть его в требуемом формате. Проблема в том, что 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 ]

2 голосов
/ 11 декабря 2011

Работает нормально, если вы передаете свой вновь созданный массив как параметр:

float b[][] = new float[a.length-count][];
b = al.toArray(b);
2 голосов
/ 11 декабря 2011

Попробуйте использовать следующее:

float b[][] = new float [a.length-count][3];
b = al.toArray(b);

Это общая версия toArray(), которая в вашем случае вернет float[][]. Имейте в виду, что float[] - это объект, поэтому здесь нет проблем с упаковкой / распаковкой.

Однако я заметил несколько основных проблем с вашим кодом - я рекомендую попробовать скомпилировать его и устранить ошибки.

...