java Android排序ArrayList <float []>

use*_*685 -1 java android arraylist multidimensional-array

如何根据数组中每个项的第一个维度对ArrayList进行排序?

例:

要排序的ArrayList <float []>

ysh*_*vit 6

您需要使用自定义比较器.例如:

Comparator<float[]> byFirstElement = new Comparator<float[]>() {
    @Override
    public int compare(float[] arg0, float[] arg1) {
        return Float.compare(arg0[0], arg1[0]);
    }
};
Collections.sort(theArray, byFirstElement);
Run Code Online (Sandbox Code Playgroud)

这个实现假设两个float[]数组实际上至少有一个元素; 如果他们不这样做,比较会抛出一个ArrayIndexOutOfBoundsException.如果你不完全确定数组总是非空的,你的compare函数应该检查arg0.lengtharg1.length适当地处理它们(你需要处理的三种情况是只有arg0空时,只有arg1空时,或两者都是空).

它的分配是一个好主意,Comparator<float[]>private static final你们班.这有点高效,因为每次使用它都不需要创建新对象; 但更重要的是,它赋予它一个漂亮,易于阅读的名称.