我的List<Size> list1
来自parameters.getSupportedPreviewSizes()
我想按升序排序(width * height)
我试过了Collection.sort
,但似乎行不通
列表排序的最佳方法是什么?感谢。
答案 0 :(得分:8)
使用自定义Comparator
。
Comparator
用于比较两个对象以确定它们相对于彼此的排序。在给定Collection
上,Comparator
可用于获取完全有序的已排序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;
}
});
答案 1 :(得分: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());
}
}