List 需要对里面的某个 bool 类型的字段进行排序,排序算法如下:

    1. // a^b,a和b结果不同为true,相同为false
    2. Comparator<MobileVo> comparator = (o1, o2) -> {
    3. if (o1.isAvailable() ^ o2.isAvailable()) {
    4. return o1.isAvailable() ? -1 : 1;
    5. } else {
    6. return 0;
    7. }
    8. };
    9. mobileList.sort(comparator);

    mobileList 中的 available 字段为 bool 值,根据其排序,取两个对象的异或运算来进行判断处理:

    1. 当两个 mobileVo 的 available 字段一致时,comparator 返回 0;
    2. 当两个 mobileVo 的 available 字段不一致且前一个的值为 true 时,comparator 返回 -1;
    3. 当两个 mobileVo 的 available 字段不一致且前一个的值为 false 时,comparator 返回 1;

    mobileList.sort 根据该 comparator 进行排序,默认是升序升序,即按 available 升序排序,依次是 -1、0、1
    保证 available 字段为 true 的排在前面。