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.length
和 arg1.length
,并适当地处理它们(你需要处理的三种情况是只有 arg0
为空,只有 arg1
为空,或两者都为空时)。
最好将 Comparator<float[]>
分配给 class 中的 private static final
。这样效率更高一些,因为您不需要在每次使用它时都创建一个新对象;但更重要的是,它给了它一个漂亮、易于阅读的名字。
如何根据数组中每一项的第一个维度对 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.length
和 arg1.length
,并适当地处理它们(你需要处理的三种情况是只有 arg0
为空,只有 arg1
为空,或两者都为空时)。
最好将 Comparator<float[]>
分配给 class 中的 private static final
。这样效率更高一些,因为您不需要在每次使用它时都创建一个新对象;但更重要的是,它给了它一个漂亮、易于阅读的名字。