![](/img/trans.png)
[英]How to sort list of locale objects in list interface using comparator in java
[英]Using Comparator to sort the List of Objects
使用比較器根據距離對對象列表進行排序
private Point getNearestPixelValue(int pixlX, int pixlY) {
LinkedList<DistancePoint> mList=new LinkedList<DistancePoint>();
for (int i = 0; i < modelModFile.getStroke_paths().size(); i++) {
for (int j = 0; j < modelModFile.getStroke_paths().get(i).getMain_stroke().size(); j++) {
if (j < modelModFile.getStroke_paths().get(i).getMain_stroke().size() - 1) {
String a = modelModFile.getStroke_paths().get(i).getMain_stroke().get(j).getStroke();
String[] fA = a.split(",");
Point p1 = new Point(Integer.valueOf(fA[0]), Integer.valueOf(fA[1]));
Point p2 = new Point(pixlX, pixlY);
//Add the calculated distance to a integerArray
DistancePoint mObj=new DistancePoint(p2,calDistBtwTwoPixels(p1, p2));
mList.add(mObj);
}
}
}
//Sort the array
Arrays.sort(mList, DistancePoint.distanceComparator);
//Return the nearest point
return mList.get(0).getmPoint();
}
DistancePoint.java
public class DistancePoint implements Comparable<DistancePoint>{
int mDistance;
Point mPoint;
public DistancePoint(Point mPoint, int mDistance) {
super();
this.mPoint = mPoint;
this.mDistance = mDistance;
}
public int getmDistance() {
return mDistance;
}
public void setmDistance(int mDistance) {
this.mDistance = mDistance;
}
public Point getmPoint() {
return mPoint;
}
public void setmPoint(Point mPoint) {
this.mPoint = mPoint;
}
public static Comparator<DistancePoint> distanceComparator = new Comparator<DistancePoint>() {
@Override
public int compare(DistancePoint e1, DistancePoint e2) {
return (int) (e1.getmDistance() - e2.getmDistance());
}
};
@Override
public int compareTo(DistancePoint distancePoint) {
//let's sort the employee based on distance in ascending order.
return (this.mDistance - distancePoint.mDistance);
}
}
如何解決此問題,無法理解該錯誤。 我是否正確使用比較器
您正在嘗試對List<T>
進行排序; 您應該使用的是:
Collections.sort(theList, theComparator);
Arrays.sort()
需要一個T[]
陣列T
),這是不太同樣的事情-在很多方面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.