2

我有一个List<Size> list1来自parameters.getSupportedPreviewSizes() 我想按升序对其进行排序的内容(width * height)
我试过了Collection.sort,但似乎不起作用。
对列表进行排序的最佳方法是什么?谢谢。

4

2 回答 2

9

使用自定义Comparator.

AComparator用于比较两个对象以确定它们相对于彼此的顺序。在给定的情况下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 回答