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
A simple suggestion would be to use the object
Boolean
instead of boolean and useCollections.sort
.However, you must know that the
false
will be before thetrue
because true are represented as1
and false as0
. But then, you could just change your algorithm and access in reverse order.Edit : As soulscheck stated, you could use
Collections.reverseOrder
to revert the ordering imposed by the Comparator.