Java 按页面行顺序对点的数组列表进行排序

Java 按页面行顺序对点的数组列表进行排序,java,sorting,points,Java,Sorting,Points,我需要按页面行顺序排列点的数组列表。假设这些点是文本矩形的minX和minY 说我有以下几点 点(100,10),点(110,20),点(125,5),点(130,10) 排序的顺序应与页面行项目对齐 i、 e点(125,5),点(100,10),点(130,10),点(110,20) 我试着先按Y坐标排序,然后按X坐标排序 public int compare(final Point a, final Point b) { if (a.y() < b.y()) {

我需要按页面行顺序排列点的数组列表。假设这些点是文本矩形的minX和minY

说我有以下几点

点(100,10),点(110,20),点(125,5),点(130,10)

排序的顺序应与页面行项目对齐

i、 e点(125,5),点(100,10),点(130,10),点(110,20)

我试着先按Y坐标排序,然后按X坐标排序

public int compare(final Point a, final Point b) {
    if (a.y() < b.y()) {
        return -1;
    }else if (a.y() > b.y()) {
        return 1;
    }else {
        return 0;
    }
}

public int compare(final Point a, final Point b) {
    if (a.x() < b.x()) {
        return -1;
    }else if (a.x() > b.x()) {
        return 1;
    }else {
        return 0;
    }
}
public int比较(终点a、终点b){
如果(a.y()b.y()){
返回1;
}否则{
返回0;
}
}
公共整数比较(终点a、终点b){
如果(a.x()b.x()){
返回1;
}否则{
返回0;
}
}

下面是我现在得到的订单

行=0.00 2450 00 SewiceTax@14关于are,小计贰仟肆佰伍拾卢比整

管线=50-42’处的Swachh Bharat套管:

直线=Knshu Kaiyan Cass@0'50“5

行=减去预付款

行=2450 GD应付余额

预期是

Line=小计贰仟肆佰伍拾整0.00 2450 00INR SewiceTax@14 on are,

根据您的用例使用并覆盖compare()。 这些链接将帮助您


这应该适合您。先按Y坐标排序,然后按X坐标排序

Point p1 = new Point(12,  15);
Point p2 = new Point(13,  12);
Point p3 = new Point(14,  15);

List<Point> list = new ArrayList<>();
list.add(p1);
list.add(p2);
list.add(p3);

Comparator<Point> comp = new Comparator<Point>() {
    @Override
    public int compare(Point p1, Point p2) {
        return p2.y  == p1.y ? p2.x -p1.x : p2.y-p1.y;
    }
};
list.sort(comp);
点p1=新点(12,15);
点p2=新点(13,12);
点p3=新点(14,15);
列表=新的ArrayList();
列表。添加(p1);
列表。添加(p2);
列表。添加(p3);
比较器comp=新比较器(){
@凌驾
公共整数比较(点p1,点p2){
返回p2.y==p1.y?p2.x-p1.x:p2.y-p1.y;
}
};
列表.排序(comp);

您的尝试?显示您尝试过的代码。您尝试过什么吗?我确信有一个SO问题已经涉及到如何为point类创建客户比较器,以便在对点列表进行排序时使用。很高兴看到您已经尝试过的内容,我们不是在这里为您编程算法^Use comparator in point clas可能的副本看起来很有希望。我会检查并让你知道。可能是我必须改变的顺序。np老兄,我会投票。有一些人就是为了这个。。。