栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Comparator Java7 Java8 Groovy的不同写法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Comparator Java7 Java8 Groovy的不同写法

        Java提供了一个用于比较的接口Comparable, 通过实现compareTo的方法来实现对于容器外部类的比较方法,所有实现该接口的类,都动态的实现了该比较方法,Java中同样提供了一个关于容器排序的接口Comparator,主要是通过类的内部属性进行一个比较然后对其进行比较,本篇文章主要分析比较了Comparator在Java7 Java8 Groov当中的不同写法。


Java7

先声明一个要用来排序的User类

@ToString
@Setter
@Getter
class User {
    String name;
    Integer age;
}
List lists = new ArrayList<>();
        User user1 = new User();
        User user2 = new User();
        User user3 = new User();

        user1.setName("user1");
        user1.setAge(18);
        user2.setName("user2");
        user2.setAge(19);
        user3.setName("user3");
        user3.setAge(20);

        lists.add(user1);
        lists.add(user2);
        lists.add(user3);

看一下现在lists里面的顺序

[User(name=user1, age=18), User(name=user2, age=19), User(name=user3, age=20)]

按照年龄从大到小排个序

lists = lists.stream().sorted(new Comparator() {
            @Override public int compare(User o1, User o2) {
                return o2.getAge() - o1.getAge() > 0 ? 1 : -1;
            }
        }).collect(Collectors.toList());

结果

[User(name=user3, age=20), User(name=user2, age=19), User(name=user1, age=18)]


Java8

        我们再来看一下Java8的写法,其他都不变,主要是排序方法

lists = lists.stream().sorted(((o1, o2) -> (o2.getAge() - o1.getAge() > 0 ? 1 : -1))).collect(Collectors.toList());

总结

Java 8 希望有自己的编程风格,并与 Java 7 区别开, 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。


Groovy

@groovy.transform.ToString
class User {
    String name;
    Integer age;
}
User user1 = new User(name: 'user1', age: 18)
        User user2 = new User(name: 'user1', age: 19)
        User user3 = new User(name: 'user1', age: 20)

        def lists = [user1, user2, user3]
        lists.sort { a, b -> b.age <=> a.age }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/350946.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号