1.使用Comparable进行排序

2.使用Comparator进行排序

3.使用Stream表达式进行排序(JDK8遍历)

1.Comparable排序

public class ListSortExample {
    public static void main(String[] args) {
        // 创建并初始化 List
        List<StatusTrackVo > list = new ArrayList<StatusTrackVo >() {{ 
            add(new StatusTrackVo("待审核",100));
            add(new StatusTrackVo("待缴费",102));
            add(new StatusTrackVo("立案",200));
        }};
        // 使用 Comparable 自定的规则进行排序
        Collections.sort(list);
        // 打印 list 集合
        list.forEach(p -> {
            System.out.println(p);
        });
    }
}
 
//  以下 set/get/toString 使用的是 lombok 的注解
@Getter
@Setter
@ToString
class StatusTrackVo implements Comparable<StatusTrackVo> {
 
    private String name;

    private Integer code;
 
    public StatusTrackVo( String name,Integer code) { 
        this.code= code;
        this.name = name;
    }
     // 从大到小  如果要从小到大 就把内容改成this.getAge() - p.getAge();
    @Override
    public int compareTo(StatusTrackVo p) {
        return p.getCode() - this.getCode();
    }
}

2.使用Comparator进行排序

public class ListSortExample2 {
    public static void main(String[] args) {
        // 创建并初始化 List
        List<StatusTrackVo> list = new ArrayList<StatusTrackVo>() {{
            add(new StatusTrackVo("待审核",100));
            add(new StatusTrackVo("待缴费",102));
            add(new StatusTrackVo("立案",200));
        }};
        // 使用 Comparator 比较器排序
        Collections.sort(list, new StatusTrackVoComparator());
        // 打印 list 集合
        list.forEach(p -> {
            System.out.println(p);
        });
    }
}
/**
 * 新建 Person 比较器
 */
class StatusTrackVoComparatorimplements Comparator<StatusTrackVo> {
    @Override
    public int compare(StatusTrackVo p1, StatusTrackVo p2) {
        return p2.getCode() - p1.getCode();
    }
}
@Getter
@Setter
@ToString
class StatusTrackVo{
    private String name;

    private Integer code;
 
    public StatusTrackVo( String name,Integer code) { 
        this.code= code;
        this.name = name;
    }
}

3.使用Stream表达式进行排序(JDK8遍历)

public class ListSortExample4 {
    public static void main(String[] args) {
        // 创建并初始化 List
        List<StatusTrackVo> list = new ArrayList<StatusTrackVo>() {{
            add(new StatusTrackVo("待审核",100));
            add(new StatusTrackVo("待缴费",102));
            add(new StatusTrackVo("立案",200));
        }};
        // 按照[年龄]正序,但年龄中有一个 null 值
        list = list.stream().sorted(Comparator.comparing(StatusTrackVo::getCode,
                Comparator.nullsFirst(Integer::compareTo)))
                .collect(Collectors.toList());
        // 打印 list 集合
        list.forEach(p -> {
            System.out.println(p);
        });
    }
}
@Getter
@Setter
@ToString
class StatusTrackVo{
    private String name;

    private Integer code;
 
    public StatusTrackVo( String name,Integer code) { 
        this.code= code;
        this.name = name;
    }
  
}

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐