按页面行顺序对点的 ArrayList 进行排序
Sort an ArrayList of Points in page line order
我需要按页面行顺序排列点的 ArrayList。假设这些点为文本矩形的 minX 和 minY。
说我有如下几点
点(100,10),点(110, 20),点(125, 5),点(130, 10)
排序顺序应与页面行项目对齐
即点(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;
}
}
下面是我现在收到的订单
Line = 0.00 2450 00 SewiceTax @14 on are,小计只有 2450 INR
Line = Swachh Bharat Cass @ O 50 42':
线 = Knshu Kaiyan Cass @ 0'50“5
行 = 减去预付款
行 = 2450 GD 应付余额
预计是
行 = 小计 2450 只有 0.00 2450 00INR SewiceTax @14 on are,
使用 Comparator,并根据您的用例覆盖 compare()。
这些链接将帮助您
How to sort ArrayList using Comparator?
How to use Comparator in Java to sort
这应该适合你。先按 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);
我需要按页面行顺序排列点的 ArrayList。假设这些点为文本矩形的 minX 和 minY。
说我有如下几点
点(100,10),点(110, 20),点(125, 5),点(130, 10)
排序顺序应与页面行项目对齐
即点(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;
}
}
下面是我现在收到的订单
Line = 0.00 2450 00 SewiceTax @14 on are,小计只有 2450 INR
Line = Swachh Bharat Cass @ O 50 42':
线 = Knshu Kaiyan Cass @ 0'50“5
行 = 减去预付款
行 = 2450 GD 应付余额
预计是
行 = 小计 2450 只有 0.00 2450 00INR SewiceTax @14 on are,
使用 Comparator,并根据您的用例覆盖 compare()。 这些链接将帮助您
How to sort ArrayList using Comparator?
How to use Comparator in Java to sort
这应该适合你。先按 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);