• Java中Comparator、Comparable的比较功能


    Comarable和Comparator都是用来实现集合中元素的比较、排序的,Comparable是在集合内部定义的方法实现排序,Comparator是在集合外部实现的排序,Comparable位于java.lang包,Comparator位于java.util包。

    Comparable:

    当前类小于参数返回负数,等于返回0,大于返回正数。

    class Person implements Comparable<Person>{
        String name;
        int age;
        Person(String n, int a) {
            name = n;
            age = a;
        }
    
        @Override
        public int compareTo(Person person) {
            return name.compareTo(person.name);
        }
    }
    ArrayList<Person> list = new ArrayList<Person>();
    list.add(new Person("aaa", 10));
    list.add(new Person("bbb", 20));
    list.add(new Person("ccc", 30));
    Collections.sort(list); //这里会自动调用Person中重写的compareTo方法。

    Comparator:

    可以通过两种方式实现自定义排序

    1.定义一个类实现Comparator接口,重写compare方法。

    2.语法不同,在内部new这个接口并重写compare方法。

    第一个参数小于第二个参数返回负数,相等返回0,大于返回正数。

    class Person {
        String name;
        int age;
        Person(String n, int a) {
            name = n;
            age = a;
        }
    }
    class DemoComparator implements Comparator<Person> {
        @Override
        public int compare(Person a, Person b) {
            return a.name.compareToIgnoreCase(b.name);
        }
    }
    class Demo {
        public static void main(String[] args) {
            List<Person> persons = Arrays.asList(
                new Person("Joe", 24),
                new Person("Pete", 18),
                new Person("Chris", 21)
            );
            Collections.sort(persons, new DemoComparator());
            System.out.println(persons);
            //[{name=Chris, age=21}, {name=Joe, age=24}, {name=Pete, age=18}]
            Collections.sort(persons, new Comparator<Person>() {
                @Override
                public int compare(Person a, Person b) {
                    return a.age < b.age ? -1 : a.age == b.age ? 0 : 1;
                }
            });
            System.out.println(persons);
            //[{name=Pete, age=18}, {name=Chris, age=21}, {name=Joe, age=24}]
        }
    }
  • 相关阅读:
    python 进度条
    linux中利用Shell脚本实现自动安装部署weblogic服务
    Linux虚拟机如何上网
    常用Python脚本
    Allure测试框架
    软件评测师 第二小时
    保险项目测试流程(一)
    电子商务网站测试总结
    Python随机生成电话号码&号码段分析
    Python中的*args和**kwargs
  • 原文地址:https://www.cnblogs.com/DreamFather/p/14581098.html
Copyright © 2020-2023  润新知