java Android 排序 ArrayList<float[]>

java Android sort ArrayList<float[]>

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

示例:

Collections.sort(floatArray2, new Comparator() { 

    public int compare(float[] arg0, float[] arg1) {
        return arg0[0] == arg1[0] ? 0 : arg0[0] < arg1[0] ? -1 : 1;
    } 
}); 

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

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

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

最好将 Comparator<float[]> 分配给 class 中的 private static final。这样效率更高一些,因为您不需要在每次使用它时都创建一个新对象;但更重要的是,它给了它一个漂亮、易于阅读的名字。