java.util.Comparator Interface

Comparator interface i adından da anlaşılacağı gibi primitive olmayan class objelerinin karşılaştıılmasını sağlar. Javadoc bu adresten ulaşabilirsiniz. Objenin karşılaştırılabilmesi için interface içindeki compare() fonksiyonun tanımlanması gerekmektedir.

 

Örnek olarak class tanımımız aşağıdaki gibi olsun.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
 *
 * @author ugur
 */

public class Node {

    public int value;
    public String name;

    public Node(int value, String name) {
        this.value = value;
        this.name = name;
    }
}

 

Comparator class ını aşağıdaki gibi tanımlıyoruz.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.Comparator;

/**
 *
 * @author ugur
 */

public class CompareNode implements Comparator<Node> {

    public int compare(Node o1, Node o2) {
        if (o1.value < o2.value )
            return -1;
        else if (o1.value > o2.value)
            return 1;
        else
            return 0;
    }
}

 

 

Kullanımı ise aşağıdaki gibidir.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.PriorityQueue;

/**
 *
 * @author ugur
 */

public class Test {

    public static void main(String [] args) {

        PriorityQueue<Node> queue = new PriorityQueue<Node>(100, new CompareNode());
        queue.add(new Node(5, "a"));
        queue.add(new Node(2, "b"));
        queue.add(new Node(3, "c"));

        while(!queue.isEmpty()) {
            System.out.println(queue.poll().name);
        }
    }
}

 

 

Output:

 

run:
b
c
a

Leave a Reply