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 |
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