Comment detail

データの整列 (Nested Flatten)

Javaらしく、Comparatorを実装しました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Random;

public class Sample163 {
    public static void main(String[] args) {
        Random random = new Random();
        List<Point> list = new ArrayList<Point>();
        for (int index = 0, count = 10; index < count; index++) {
            list.add(new Point(random.nextInt(10), random.nextInt(10)));
        }

        System.out.print("original  : ");
        System.out.println(list.toString());

        Collections.sort(list, new DictionaryComparator());
        System.out.print("dictionary: ");
        System.out.println(list.toString());

        Collections.sort(list, new DistanceComparator());
        System.out.print("distance  : ");
        System.out.println(list.toString());
    }
}

class Point {
    public final int x;
    public final int y;

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

    @Override public String toString() {
        return "(" + x + "," + y + ")";
    }
}

class DictionaryComparator implements Comparator<Point> {
    @Override
    public int compare(Point o1, Point o2) {
        int result = Integer.valueOf(o1.x).compareTo(o2.x);
        if (result == 0) {
            result = Integer.valueOf(o1.y).compareTo(o2.y);
        }
        return result;
    }
}

class DistanceComparator implements Comparator<Point> {
    @Override
    public int compare(Point o1, Point o2) {
        return Integer.valueOf(o1.x * o1.x + o1.y * o1.y).compareTo(o2.x * o2.x + o2.y * o2.y);
    }
}

Index

Feed

Other

Link

Pathtraq

loading...