[Java]Comparator と Arrays.sort を利用して Point オブジェクトをソートする
// Comparator と Arrays.sort を利用して、
// Point オブジェクトをソートする
// 静的内部クラス(static inner class)版
import java.awt.*;
import java.util.*;
public class PointSortTest {
public static void main(String[] args) {
Point[] pArray =
new Point[] {
new Point(1, 5),
new Point(4, 2),
new Point(9, 0),
new Point(3, 7),
new Point(8, 6),
};
System.out.println("Point.x でソート");
Arrays.sort(pArray, new PointXComparator());
printPointArray(pArray);
System.out.println("Point.y でソート");
Arrays.sort(pArray, new PointYComparator());
printPointArray(pArray);
}
private static void printPointArray(Point[] pArray) {
for (int i = 0; i < pArray.length; i++) {
System.out.println(pArray[i]);
}
}
private static class PointXComparator implements Comparator {
/**
* 順序付けのために 2 つの引数を比較します。
* 最初の引数が 2 番目の引数より小さい場合は負の整数、
* 両方が等しい場合は 0、
* 最初の引数が 2 番目の引数より大きい場合は正の整数を返します。
*/
public int compare(Object o1, Object o2) {
Point p1 = (Point) o1;
Point p2 = (Point) o2;
return p1.x - p2.x;
}
public final boolean equals(Object obj) {
return this.equals(obj);
}
}
private static class PointYComparator implements Comparator {
/**
* 順序付けのために 2 つの引数を比較します。
* 最初の引数が 2 番目の引数より小さい場合は負の整数、
* 両方が等しい場合は 0、
* 最初の引数が 2 番目の引数より大きい場合は正の整数を返します。
*/
public int compare(Object o1, Object o2) {
Point p1 = (Point) o1;
Point p2 = (Point) o2;
return p1.y - p2.y;
}
public final boolean equals(Object obj) {
return this.equals(obj);
}
}
}
ニガテな無名クラスを使ってみた。
[Java]Comparator と Arrays.sort を利用して Point オブジェクトをソートする
// Comparator と Arrays.sort を利用して、
// Point オブジェクトをソートする
// 無名クラス(anonymous class)版
import java.awt.*;
import java.util.*;
public class PointSortTest2 {
public static void main(String[] args) {
Point[] pArray =
new Point[] {
new Point(1, 5),
new Point(4, 2),
new Point(9, 0),
new Point(3, 7),
new Point(8, 6),
};
System.out.println("Point.x でソート");
Arrays.sort(pArray, new Comparator() {
public int compare(Object o1, Object o2) {
Point p1 = (Point) o1;
Point p2 = (Point) o2;
return p1.x - p2.x;
}
public final boolean equals(Object obj) {
return this.equals(obj);
}
});
printPointArray(pArray);
System.out.println("Point.y でソート");
Arrays.sort(pArray, new Comparator() {
public int compare(Object o1, Object o2) {
Point p1 = (Point) o1;
Point p2 = (Point) o2;
return p1.y - p2.y;
}
public final boolean equals(Object obj) {
return this.equals(obj);
}
});
printPointArray(pArray);
}
private static void printPointArray(Point[] pArray) {
for (int i = 0; i < pArray.length; i++) {
System.out.println(pArray[i]);
}
}
}