【发布时间】:2015-03-16 03:25:52
【问题描述】:
我想使用布尔类型对我的ArrayList 进行排序。基本上我想首先显示带有true 的条目。下面是我的代码:
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;
}
});
排序前排序: 真的 真的 真的 错误的 错误的 错误的 错误的 真的 错误的 假的
排序后排序: 错误的 错误的 真的 真的 真的 真的 错误的 错误的 错误的 假的
【问题讨论】:
-
如果是
==,则返回0。如果是!=,则根据第一个是真还是假,使用1或-1。 -
您的第二个
if条件永远不会评估为true。它是第一个的同义词。 -
你需要定义你需要的排序,是否与id有关?
标签: java sorting arraylist java-collections-api