Java 如何根据等高线(x,y)对多点列表进行排序

Java 如何根据等高线(x,y)对多点列表进行排序,java,android,opencv4android,Java,Android,Opencv4android,我有一个列表,其中包含了我使用opencv从图像中检测到的轮廓。 如何根据这些等高线的x和y坐标对列表进行排序 我知道List有一个sort方法,但我被Comparator参数弄糊涂了。这取决于您想如何比较它,解决方案可能是: @Override public int compare(MatOfPoints mop1, MatOfPoints mop2) { long sumMop = 0; long sumMop2 = 0; for( Point p: mop1.toList

我有一个列表,其中包含了我使用
opencv
从图像中检测到的轮廓。 如何根据这些等高线的
x
y
坐标对
列表进行排序


我知道
List
有一个
sort
方法,但我被
Comparator
参数弄糊涂了。

这取决于您想如何比较它,解决方案可能是:

@Override
public int compare(MatOfPoints mop1, MatOfPoints mop2) {
   long sumMop = 0;
   long sumMop2 = 0;
   for( Point p: mop1.toList() ){
      sumMop1 += p.x + p.y
   }
   for( Point p: mop2.toList() ){
      sumMop2 += p.x + p.y
   }
   if( sumMop1 > sumMop2)
        return 1;
    else if( sumMop1 < sumMop2 )
        return -1;
    else
        return 0;
}
@覆盖
公共整数比较(多点mop1,多点mop2){
长总和=0;
长总和2=0;
对于(点p:mop1.toList()){
总和1+=p.x+p.y
}
对于(点p:mop2.toList()){
总和2+=p.x+p.y
}
如果(sumMop1>sumMop2)
返回1;
else if(sumMop1
如果您对Comparator感到困惑,为什么不看看java提供的教程呢?Comparator到底让您困惑的是什么?下面是接口的完整java文档-