Kamis, 27 Maret 2014

How to Sort Java ArrayList in Descending Order - Example Tutorial




Sorting ArrayList in Java is a common task for Java developer and we have touched it while discussing


10 Example of  ArrayList in Java and again when we discussed comparator and comparable in Java. In order to sort an arraylist we need to use Collections utility class which contains overloaded sort() method for sorting different collections and  supports different comparator in Java. In this article we will see How to sort ArrayList with natural order of element and than sorting ArrayList in Java with comparator.









Sort ArrayList in Ascending and Descending order





Sorting ArrayList in Java with natural Order



how to sort arraylist in java example codeIn Order to Sort Java ArrayList on natural order of elements, object stored in ArrayList must implement Comparable interface in Java and should override compareTo() method as per there natural order. In our example of natural order sorting in ArrayList we have implemented compareTo of smartphone and sorted them based on brands. So an Apple smartphone comes before Nokia smartphone. Once your object is OK just store them in Java arraylist and pass that list to Collections.sort() method, this will sort the list in natural order of objects. see bottom of this java tutorial for complete code example of Sorting Java ArrayList in Natural Order.







Sorting Java ArrayList with custom Order



To Sort a Java arraylist on Custom order we need to supply an external Comparator along-with Arraylist to Collections.sort(List, Comparator) method. Compare() method will define how sorting of objects will take place in ArrayList.In our example of custom order sorting of Java Arraylist we have created a PriceComparator which sorts objects based on there price. So you can get cheapest or expensive smartphone stored in ArrayList. See below for full code example of ArrayList Sorting in custom order in Java:







Code Example of Sorting ArrayList in Java



Here is complete code example of sorting an arraylist in java on both natural and custom order by using Custom comparator.






package test;





import java.util.ArrayList;


import java.util.Collections;


import java.util.Comparator;





public class ArrayListSortingExample {





   private static class SmartPhone implements Comparable {


        private String brand;


        private String model;


        private int price;





        public SmartPhone(String brand, String model, int price){


            this.brand = brand;


            this.model = model;


            this.price = price;


        }


      


        @Override


        public int compareTo(SmartPhone sp) {


            return this.brand.compareTo(sp.brand);


        }





        @Override


        public String toString() {


            return "SmartPhone{" + "brand=" + brand + ", model=" + model + ", price=" + price + '}';


        }


      


    }


  


    private static class PriceComparator implements Comparator{





        @Override


        public int compare(SmartPhone sp1, SmartPhone sp2) {


            return (sp1.price < sp2.price ) ? -1: (sp1.price > sp2.price) ? 1:0 ;


        }


      


    }





    public static void main(String... args) {


      


        //creating objects for arraylist sorting example


        SmartPhone apple = new SmartPhone("Apple", "IPhone4S",1000);


        SmartPhone nokia = new SmartPhone("Nokia", "Lumia 800",600);


        SmartPhone samsung = new SmartPhone("Samsung", "Galaxy Ace",800);


        SmartPhone lg = new SmartPhone("LG", "Optimus",500);


      


        //creating Arraylist for sorting example


        ArrayList smartPhones = new ArrayList();


      


        //storing objects into ArrayList for sorting


        smartPhones.add(apple);


        smartPhones.add(nokia);


        smartPhones.add(samsung);


        smartPhones.add(lg);


      


        //Sorting Arraylist in Java on natural order of object


        Collections.sort(smartPhones);


      


        //print sorted arraylist on natural order


        System.out.println(smartPhones);


      


        //Sorting Arraylist in Java on custom order defined by Comparator


        Collections.sort(smartPhones,new PriceComparator());


      


        //print sorted arraylist on custom order


        System.out.println(smartPhones);


    


    }


}





Output:


[SmartPhone{brand=Apple, model=IPhone4S, price=1000}, SmartPhone{brand=LG, model=Optimus, price=500}, SmartPhone{brand=Nokia, model=Lumia 800, price=600}, SmartPhone{brand=Samsung, model=Galaxy Ace, price=800}]





[SmartPhone{brand=LG, model=Optimus, price=500}, SmartPhone{brand=Nokia, model=Lumia 800, price=600}, SmartPhone{brand=Samsung, model=Galaxy Ace, price=800}, SmartPhone{brand=Apple, model=IPhone4S, price=1000}]









How to sort ArrayList in Descending Order in Java



ArrayList can also be sorted in descending or reverse order by using Collections.reverseOrder() and Collection.reverseOrder(Comparator cmp). Former method will sort in reverse order of natural ordering while later method will sort in the reverse order of specified comparator as shown in following example of sorting arraylist into reverse order :



//sorting ArrayList in descending or reverse order in Java


List unsortedList = Arrays.asList("abc", "bcd", "ade", "cde");


Collections.sort(unsortedList, Collections.reverseOrder());





System.out.println("Arraylist in descending order: " + unsortedList);








Output:


ArrayList before sorting in reverse order: [abc, bcd, ade, cde]


Arraylist in descending order: [cde, bcd, ade, abc]


How to sort ArrayList of String  in Case insensitive Order



ArrayList  of String can also be sorted with case insensitive comparison. String class defines a convenient case insensitive comparator which can be accessed directly like String.CASE_INSENSITIVE_ORDER . if you pass this comparator to ArrayList.sort() which contains String then those will be sorted accordingly. Here is an example of sorting arraylist in case insensitive order:





//sorting ArrayList on case insensitive order of String


unsortedList = Arrays.asList("abc", "bcd", "ABC", "BCD");


System.out.println("ArrayList before case insensitive sort: " + unsortedList);


             


Collections.sort(unsortedList, String.CASE_INSENSITIVE_ORDER);


System.out.println("ArrayList after case insensitive sort: " + unsortedList);





Output:


ArrayList before case insensitive sort: [abc, bcd, ABC, BCD]


ArrayList after case insensitive sort: [abc, ABC, bcd, BCD]






That’s all on Sorting ArrayList in Java based on natural order of Object and any custom order by using Custom Comparator. Let me know if you face any issue while running Sorting ArrayList Example code in Java and I wold be glad to help you.





Thanks





Java Tutorials you may Like






























Source:http://javarevisited.blogspot.com/2012/01/how-to-sort-arraylist-in-java-example.html

1 komentar: