一篇告诉你Comparator.comparing的使用

这篇具有很好参考价值的文章主要介绍了一篇告诉你Comparator.comparing的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Comparator.comparing用处

很多情况下sql不好解决的多表查询,临时表分组,排序,尽量用java8新特性stream进行处理,使用java8新特性

//返回 对象集合以类属性一升序排序
list.stream().sorted(Comparator.comparing(::属性一));

//返回 对象集合以类属性一降序排序 注意两种写法
//先以属性一升序,结果进行属性一降序
list.stream().sorted(Comparator.comparing(::属性一).reversed());
//以属性一降序
list.stream().sorted(Comparator.comparing(::属性一,Comparator.reverseOrder()));

//返回 对象集合以类属性一升序 属性二升序
list.stream().sorted(Comparator.comparing(::属性一).thenComparing(::属性二));

//返回 对象集合以类属性一降序 属性二升序 注意两种写法
//先以属性一升序,升序结果进行属性一降序,再进行属性二升序
list.stream().sorted(Comparator.comparing(::属性一).reversed().thenComparing(::属性二));
//先以属性一降序,再进行属性二升序
list.stream().sorted(Comparator.comparing(::属性一,Comparator.reverseOrder()).thenComparing(::属性二));

//返回 对象集合以类属性一降序 属性二降序 注意两种写法
//先以属性一升序,升序结果进行属性一降序,再进行属性二降序
list.stream().sorted(Comparator.comparing(::属性一).reversed().thenComparing(::属性二,Comparator.reverseOrder()));
//先以属性一降序,再进行属性二降序
list.stream().sorted(Comparator.comparing(::属性一,Comparator.reverseOrder()).thenComparing(::属性二,Comparator.reverseOrder()));

//返回 对象集合以类属性一升序 属性二降序 注意两种写法
//先以属性一升序,升序结果进行属性一降序,再进行属性二升序,结果进行属性一降序属性二降序
list.stream().sorted(Comparator.comparing(::属性一).reversed().thenComparing(::属性二).reversed());
//先以属性一升序,再进行属性二降序
list.stream().sorted(Comparator.comparing(::属性一).thenComparing(::属性二,Comparator.reverseOrder()));

注意,注意上面的代码:

Comparator.comparing(::属性一).reversed();

Comparator.comparing(::属性一,Comparator.reverseOrder());

   简单来说就是:
   1.先排序(默认升序),然后降序;
   2.直接降序排序;

简单举个例子:

有个Person类:

class Person{
    private int id;
    private int score;
    private String name;

    public int getId() {
        return id;
    }

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

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    public String getName() {
        return name;
    }

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

    public Person(int id, int score, String name) {
        this.id = id;
        this.score = score;
        this.name = name;
    }

    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", score=" + score +
                ", name='" + name + '\'' +
                '}';
    }
    }

Main方法:

public class Test {
    public static void main(String[] args) {
        ArrayList<Person> people = new ArrayList<>();
        people.add(new Person(1,2,"小明"));
        people.add(new Person(2,3,"校长"));
        people.add(new Person(2,1,"小子"));
        people.sort(Comparator.comparing(Person::getId).thenComparing(Person::getScore));
        for (Person person : people) {
            System.out.println(person);
        }

    }
}

结果:
comparator.comparing,java文章来源地址https://www.toymoban.com/news/detail-584740.html

到了这里,关于一篇告诉你Comparator.comparing的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据结构Java版】对象的比较之Comparable与Comparator比较器

    目录   一、基本类型的比较 二、对象类型的比较 (1)对象类型比较出现的问题 (2)重写基类equals方法 (3)基于Comparable接口的比较 1.实现Comparable接口,重写compareTo方法 (4)基于Comparator比较器的比较 1.用户自定义比较器类,实现Comparator接口 2.覆写Comparator中的compare方法

    2024年01月25日
    浏览(34)
  • Java中的比较器(Comparator)

    Java中的比较器(Comparator)是一种对象,用于定义两个对象之间的比较规则。它是一个独立的类,实现了Comparator接口,通常用于对集合中的元素进行排序。Comparator接口中有一个compare()方法,它接受两个对象作为参数,并返回一个int值,表示它们的顺序。 下面是一个简单的例

    2024年02月11日
    浏览(32)
  • Java多条件排序使用Comparator和thenComparing【包含排序List<Map<String, String>>】

    在Java中,对一个列表或集合进行排序时,经常需要基于多个条件来排序。幸运的是,Java提供了强大的 Comparator 接口,以及 thenComparing 方法,使我们能够轻松地实现多条件排序。 Comparator 接口是Java用于自定义对象排序的关键接口。它包含了一个 compare 方法,允许我们定义如何

    2024年02月04日
    浏览(36)
  • Java入门8(Comparator比较器,HashMap)

    ​Comparator不同于Comparable,使用更加的灵活,可以在不同场景下使用比较器,实际开发中,更推荐comparator比较器 Set接口常用实现类 三个常用实现类:TreeSet(基于Java红黑树,底层map),HashSet(哈希表,底层map),LinkedHashSet() Set特点: 不允许存储重复元素 没有索引,不能

    2024年02月04日
    浏览(30)
  • 【TreeSet集合】比较器排序Comparator的使用

    存储学生对象并遍历,创建TreeSet集合使用带参构造方法 要求:按照年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序 创建学生类: 测试类: 使用比较器进行排序在创建TreeSet集合时要传递Comparator的实现类对象,重写compare()方法,根据返回值进行排序。在compare方法

    2024年02月08日
    浏览(32)
  • Comparable和Comparator的用法和区别

    文章目录 前言 一 .Comparable 1.Comparable是什么? 2.comparable有用吗? 有用的话它有什么用? 没学compar之前的解决办法 :  2.在学习了comparable之后 二.comparator 1.comparator是什么? 2.comparator怎么用? 3.两者的差异 总结 在这里给大家整理了一下comparable和comparator的用法和区别,这些在以后代码

    2024年02月05日
    浏览(27)
  • Comparator.comparing嵌套对象倒序以及多重条件排序

    描述:对象A内部封装对象B,根据B的字段做倒排 描述:如:先按照年龄正序,同年龄按照体重倒序。

    2024年02月16日
    浏览(35)
  • Comparator.comparing()实现中文排序及空指针处理

      Comparator用法_乞力马扎罗の黎明的博客-CSDN博客 1、中文排序、空值处理   Collator instance = Collator.getInstance(Locale.CHINA);   checkItemVoList.stream().sorted(Comparator.comparing(DevCheckItemVo::getCheckLevel, Comparator.nullsLast(Integer::compareTo)).thenComparing(DevCheckItem::getCheckName, Comparator.nullsLast(String::com

    2024年02月17日
    浏览(26)
  • 关于Comparable、Comparator接口返回值决定顺序的问题

    Comparable和Comparator接口都是实现集合中元素的比较、排序的,下面先简单介绍下他们的用法。 以上的两个例子输出的结果如下所示: 按照年龄升序排列,年龄相同时按照姓名升序排序。 在上面的例子中我们分别实现了 compare() 和 compareTo() 对集合继续宁排序,但是我们想知道

    2024年02月10日
    浏览(32)
  • 内置函数式接口-Comparator

    【 美 /ˈkɑːmpəˌreɪtər; kəmˈpærətər/】 比较器 Compares its two arguments (o1,o2) for order,Returns a integer。 1、 negative integer, first argument is less than the second → 0 o1o2 2、 zero, first argument i, equal to than the second → =0 o1=o2 3、 positive integer ,first argument is greater than the second → 0 o1o2

    2024年02月15日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包