Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sort an ArrayList by primitive boolean type

I want to sort my ArrayList using a boolean type. Basically i want to show entries with true first. Here is my code below:

Abc.java

public class Abc {  int id;  bool isClickable;   Abc(int i, boolean isCl){     this.id = i;     this.isClickable = iCl;  }  } 

Main.java

List<Abc> abc = new ArrayList<Abc>();  //add entries here  //now sort them Collections.sort(abc, new Comparator<Abc>(){         @Override         public int compare(Abc abc1, Abc abc2){              boolean b1 = abc1.isClickable;             boolean b2 = abc2.isClickable;              if (b1 == !b2){                 return 1;             }             if (!b1 == b2){                 return -1;             }             return 0;         }     }); 

Order before sorting: true true true false false false false true false false

Order after sorting: false false true true true true false false false false

like image 499
stud91 Avatar asked Jan 17 '15 17:01

stud91


People also ask

Is there a sort method for ArrayList?

Approach: An ArrayList can be Sorted by using the sort() method of the Collections Class in Java. This sort() method takes the collection to be sorted as the parameter and returns a Collection sorted in the Ascending Order by default.


1 Answers

Another way to go is:

Collections.sort(abc, new Comparator<Abc>() {         @Override         public int compare(Abc abc1, Abc abc2) {             return Boolean.compare(abc2.isClickable,abc1.isClickable);         }     }); 
like image 131
Danilo Avatar answered Sep 20 '22 23:09

Danilo