我有一個點對象列表,我想按某個座標排序,比如說x值。 Java是否提供了任何有用的機制,還是應該利用其中一種常見的排序算法?用Java對點列表排序
3
A
回答
13
是創建一個自定義Comparator
,並用它來進行排序點的列表
class Point{
private int x;
private int y;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public Point() {
}
}
List<Point> points = new ArrayList<Point>();
points.add(new Point(1, 2));
points.add(new Point(60, 50));
points.add(new Point(50, 3));
Collections.sort(points,new Comparator<Point>() {
public int compare(Point o1, Point o2) {
return Integer.compare(o1.getX(), o2.getX());
}
});
5
在Point
類,你應該實現Comparable接口泛型類型<Point>
和使用Collections.sort
(java.util中包)用於分類List<Point>
假設:
class Point implements Comparable<Point>{
int compareTo(Point other){ /* your logic */}
}
List<Point> list = new ArrayList<Point>();
/* adding points */
Collections.sort(list);
1
您應該讓您的Point類實現Comparable接口或使用您自己的Comparator對象提供sort()方法,該對象告訴sort()如何排序對象。這裏有很多例子。
1
您可以使用類似於Bean Comparator的東西,因此您不必一直創建自定義比較器。
相關問題
- 1. 對通用類型列表排序 - Java
- 2. Java排序對象的陣列列表
- 3. Java:我如何排序對象列表?
- 4. Java:排序對象隊列
- 5. 用Java排序的點數陣列
- 6. 對列表對象排序列表
- 7. 合併排序列表java
- 8. 按java中子列表中的屬性對列表排序
- 9. 在Java中對列表列表進行排序
- 10. 排序在java中有列表的對象的列表
- 11. 用Java對鏈表進行排序
- 12. Java用revelance比較器排序列表
- 13. Java - 列表排序不起作用
- 14. 使用選擇排序根據玩家點數對列表進行排序?
- 15. 排序對象列表
- 16. Python排序 - 對象列表
- 17. 排序列表對象
- 18. R對象排序列表
- 19. 排序對象列表
- 20. 排序對象列表
- 21. 排序對象列表
- 22. 在列表中對列表排序
- 23. 排序對象列表的列表c#
- 24. Java(Android)重新排列對象列表
- 25. 使用Java中的插入排序方法對鏈表排序
- 26. Java的Android排序列表中的java對象
- 27. 如何使用C#對2D點列表進行排序?
- 28. 使用2個標準對Java進行列表排序
- 29. 用Java 8流對多個變量列表排序
- 30. 在Java中使用stream.sorted()對列表進行排序
簡直超級。非常感謝。 – Abdul 2015-09-03 06:04:18