我有一个List<Size> list1
来自parameters.getSupportedPreviewSizes()
我想按升序对其进行排序的内容(width * height)
。
我试过了Collection.sort
,但似乎不起作用。
对列表进行排序的最佳方法是什么?谢谢。
问问题
2218 次
2 回答
9
使用自定义Comparator
.
A
Comparator
用于比较两个对象以确定它们相对于彼此的顺序。在给定的情况下Collection
,aComparator
可用于获得完全有序Collection
的排序。
final Camera camera = ...;
final List<Camera.Size> sizes = camera.getParameters().getSupportedPreviewSizes();
Collections.sort(sizes, new Comparator<Camera.Size>() {
public int compare(final Camera.Size a, final Camera.Size b) {
return a.width * a.height - b.width * b.height;
}
});
于 2012-09-18T04:09:45.913 回答
1
您需要实现一个Comparable
接口来指定如何对一个对象进行评估,然后使用Collections.sort()
方法按所需的顺序进行排序。
class Size implements Comparable<Size>{
Integer width;
Integer height;
public Integer getArea(){
return width*height;
}
@Override
public int compareTo(Size o) {
return getArea().compareTo(o.getArea());
}
}
于 2012-09-18T04:07:34.220 回答