java8中List<<Obj>>排序


List排序问题

java8中引入了流的概念,还有Lambda函数的概念,那么针对List<Object>排序有哪些方法呢?

首先我们创建一个User实体类:

public static class User {
        public String name;
        public int age;

        public User(String name, int age) {
            this.name = name;
            this.age = age;
        }
        //重写了toString方法,方便打印观察
        @Override
        public String toString() {
            return "User{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    "}\n";
        }
}

创建List<User>对象

List<User> users = Arrays.asList(
        new User("zhang1", 14),
        new User("zhang2", 25),
        new User("zhang3", 16),
        new User("zhang4", 27),
        new User("zhang5", 18),
        new User("zhang6", 12)
);

我们想根据年龄来做个排序

方法一:

users.sort(new Comparator<User>() {
    @Override
    public int compare(User o1, User o2) {
        return o1.age - o2.age;
    }
});
users.forEach(System.out::print);

有了Lambda,直接可以简写成

users.sort((o1, o2) -> o1.age - o2.age);
users.forEach(System.out::print);

方法二:

users.stream().sorted((o1, o2) -> o1.age - o2.age).forEach(System.out::print);

以上都可以实现List<User>根据年龄排序,打印结果

User{name='zhang6', age=12}
User{name='zhang1', age=14}
User{name='zhang3', age=16}
User{name='zhang5', age=18}
User{name='zhang2', age=25}
User{name='zhang4', age=27}

文章作者: wuzhiyong
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 wuzhiyong !
评论
 上一篇
flink中ProcessFunction flink中ProcessFunction
ProcessFunction简介ProcessFunction是flink中最底层的API。 Flink的一些算子和函数能够进行一些时间上的操作,但是不能获取算子当前的Processing Time或者是Watermark时间戳,调用起来
2020-03-25
下一篇 
flink结合kafka实时处理分析案例 flink结合kafka实时处理分析案例
案例说明本案例主要结合kafka,实现: 通过flink,向kafka中写入模拟数据book贩卖信息,包括书籍id、类型、价格、时间戳; flink任务每五秒输出最近五分钟,根据id,不同书籍卖出的总价。 代码BookPojo.java
2020-03-23
  目录