java 根据对象的某个字段对集合进行排序
需求大概如下:
一批设备类型列表,有些是必装的,需要将必装的和不必装的进行排序。
对象的必装字段只有两个值,‘true’和‘false’,之前也针对于某个字段进行排序,但针对boolean类型进行排序,还是第一次。
JavaBean 如下:
public class DG_ComponentCategory{
private int id;
private String name; //名称
private boolean forMaster;//主端
private boolean forSlave;//从端
private boolean required;//必装
private String remark;//备注
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
//******getter and setter****
}
利用Collections对集合进行排序:
// 查询所有设备类型列表
List<DG_ComponentCategory> categoryList = DG_ComponentCategoryService.findAll()
//调用Collections.sort()方法;
Collections.sort(categoryList, new Comparator<DG_ComponentCategory>() {
//重写Comparator()方法
@Override
public int compare(DG_ComponentCategory o1, DG_ComponentCategory o2) {
//得到要比较的两个对象的某个字段,这里是required
boolean onLine1 = o1.getRequired();
boolean onLine2 = o2.getRequired();
//两个值进行位运算,值不同为1,为true,参与运算
//值相同为0,为false,不参与运算
if (onLine1 ^ onLine2) {
return onLine1 ? - : ;
} else {
return ;
}
}
});
排序完毕,前台页面显示结果(必装的默认为选中状态):
