需求:如果跟第三方调接口时,拿回来的列表数据中有的字段是空的,这时候是需要人工处理的,怎么让空的(null,”“)字段的数据展示在最前面?

实现:

class Demo {
    Integer id;
    String name;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Demo(Integer id, String name) {
        this.id = id;
        this.name = name;
    }
}

@Test
public void test3() {
    List<Demo> demos = new ArrayList<>();
    demos.add(new Demo(8, "222"));
    demos.add(new Demo(4, ""));
    demos.add(new Demo(3, "123"));
    demos.add(new Demo(6, ""));
    demos.add(new Demo(1, null));
    demos.add(new Demo(2, ""));
    demos.add(new Demo(5, "333"));
    demos.add(new Demo(7, null));
    demos.sort(Comparator.comparing(Demo::getName, Comparator.nullsFirst(String::compareTo)));
    for (Demo demo : demos) {
        System.out.println("id: " + demo.getId() + " name: " + demo.getName());
    }
}

执行结果:

id: 1 name: null
id: 7 name: null
id: 4 name:
id: 6 name:
id: 2 name: 
id: 3 name: 123
id: 8 name: 222
id: 5 name: 333
原文链接: https://tomoya92.github.io/2020/03/30/java-sort/