【发布时间】:2015-04-15 03:39:16
【问题描述】:
如何根据数组中每一项的第一个维度对 ArrayList 进行排序?
示例:
【问题讨论】:
标签: java android multidimensional-array arraylist
如何根据数组中每一项的第一个维度对 ArrayList 进行排序?
示例:
【问题讨论】:
标签: java android multidimensional-array 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[]> 分配给班级中的 private static final。这更有效一点,因为您不需要每次使用它时都创建一个新对象;但更重要的是,它赋予了它一个好听、易于阅读的名称。
【讨论】: