Monday 27 February 2017

Comparable vs. Comparator

Comparable: java.lang
Comparator: java.util

1) It provides single sorting sequence.

We can sort on particular single scenario.

It provides multiple sorting sequences.

We can provide different comparator to sort.

2) Comparable affects the original class i.e. actual class is modified.

Comparator doesn't affect the original class i.e. actual class is not modified.
3) Comparable provides compareTo() method to sort elements.
Comparator provides compare() method to sort elements.

4) We can sort the list elements of Comparable type by Collections.sort(List) method.
We can sort the list elements of Comparator type by Collections.sort(List,Comparator) method.




package com.comparator;
import java.util.Comparator;
public class StringComparator implements Comparator<String>{

       @Override
       public int compare(String objStr1, String objStr2) {
              int result = 0;
              if(objStr1!=null && objStr2!=null) {
                     result = -1 * objStr1.compareTo(objStr2);
              }
              return result;
       }
}

package com.comparator;
import java.util.Map;
import java.util.TreeMap;
public class TestComparator {
       public static void main(String[] args) {
             
              /**
               * Default Sorting accoding to comparable implemetation of
               * string class in ascending order.
               */
              Map<String,String> map = new TreeMap<String,String>();
              map.put("A""1");
              map.put("B""2");
              map.put("C""3");
             
              System.out.println(map);
             
              /**
               * Using external comparator sort String keys in descending order.
               */
              StringComparator comparator = new StringComparator();
              Map<String,String> compMap = new TreeMap<String,String>(comparator);
              compMap.put("A""1");
              compMap.put("B""2");
              compMap.put("C""3");
             
              System.out.println(compMap);
       }
}

Output:
{A=1, B=2, C=3}
{C=3, B=2, A=1}

No comments:

Post a Comment

Related Posts Plugin for WordPress, Blogger...