Java 按页面行顺序对点的数组列表进行排序
我需要按页面行顺序排列点的数组列表。假设这些点是文本矩形的minX和minY 说我有以下几点 点(100,10),点(110,20),点(125,5),点(130,10) 排序的顺序应与页面行项目对齐 i、 e点(125,5),点(100,10),点(130,10),点(110,20) 我试着先按Y坐标排序,然后按X坐标排序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()) {
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老兄,我会投票。有一些人就是为了这个。。。