First, the following method does not do what you think:
//Change the array to a list List points = Arrays.asList(data);
Btw a good IDE will automatically change this for you:
List<float[][]> points = Arrays.asList(data);
So, when you do the following:
points.remove(data[i][j][k])
what happens is that the data [i] [j] [k] primitive is automatically assigned to the Float wrapper class, and then the delete methods check to see if it contains any element equal to your wrapped Float. It checks the entire list and does not find the Float, because ... You have a list float [] []. That way, basically your code will never remove an item from the list.
But in any case, you should know that if you find an element that matches the remove method, you will get an UnsupportedOperationException, because Arrays.asList just wraps your array, and your “list” still supports float [] [] [] . And you cannot resize arrays.
Then, in any case, you usually cannot compare floating point numbers using ==:
if (data[i][j][k] == data[i][j][k+1]) {
because it’s usually a terrible way to check if two floating numbers are equal. Floating numbers should be compared using epsilon (and you should always keep track of the spread of errors).
As for your last line, you can discard it in float [] [] [], but this is pointless because this list of float [] [] created in the first is supported by your original float [] [] [] and cannot be resized (well, you can resize individual elements, but you cannot resize it).