List 需要对里面的某个 bool 类型的字段进行排序,排序算法如下:
// a^b,a和b结果不同为true,相同为false
Comparator<MobileVo> comparator = (o1, o2) -> {
if (o1.isAvailable() ^ o2.isAvailable()) {
return o1.isAvailable() ? -1 : 1;
} else {
return 0;
}
};
mobileList.sort(comparator);
mobileList 中的 available 字段为 bool 值,根据其排序,取两个对象的异或运算来进行判断处理:
- 当两个 mobileVo 的 available 字段一致时,comparator 返回 0;
- 当两个 mobileVo 的 available 字段不一致且前一个的值为 true 时,comparator 返回 -1;
- 当两个 mobileVo 的 available 字段不一致且前一个的值为 false 时,comparator 返回 1;
mobileList.sort 根据该 comparator 进行排序,默认是升序升序,即按 available 升序排序,依次是 -1、0、1
保证 available 字段为 true 的排在前面。