INDEX
[Java]Arrays.sort を利用したソートする
1  NI-Lab.  2004/09/15(Wed) 23:28
[Java]Arrays.sortを利用したソート

STL の algorithm だったか何かに似ている気がする。
関数じゃないけど Comparator オブジェクトを引数に取るところが。
2  NI-Lab.  2004/09/15(Wed) 23:28
[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);
}
}

}


3  NI-Lab.  2004/09/15(Wed) 23:29
ニガテな無名クラスを使ってみた。

[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]);
}
}

}