栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Java中使用Comparator进行排序

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

如何在Java中使用Comparator进行排序

你的示例类有几件尴尬的事情:

  • 它有个
    price
    和时称为人
    info
    (更多用于对象,而不是人);
  • 当将一个类命名为某个事物的复数形式时,这表明它是对多个事物的抽象。

无论如何,这是如何使用的演示

Comparator<T>

public class ComparatorDemo {    public static void main(String[] args) {        List<Person> people = Arrays.asList(     new Person("Joe", 24),     new Person("Pete", 18),     new Person("Chris", 21)        );        Collections.sort(people, new LexicographicComparator());        System.out.println(people);        Collections.sort(people, new AgeComparator());        System.out.println(people);    }}class LexicographicComparator implements Comparator<Person> {    @Override    public int compare(Person a, Person b) {        return a.name.compareToIgnoreCase(b.name);    }}class AgeComparator implements Comparator<Person> {    @Override    public int compare(Person a, Person b) {        return a.age < b.age ? -1 : a.age == b.age ? 0 : 1;    }}class Person {    String name;    int age;    Person(String n, int a) {        name = n;        age = a;    }    @Override    public String toString() {        return String.format("{name=%s, age=%d}", name, age);    }}

编辑
等效的Java 8演示如下所示:

public class ComparatorDemo {    public static void main(String[] args) {        List<Person> people = Arrays.asList(     new Person("Joe", 24),     new Person("Pete", 18),     new Person("Chris", 21)        );        Collections.sort(people, (a, b) -> a.name.compareToIgnoreCase(b.name));        System.out.println(people);        Collections.sort(people, (a, b) -> a.age < b.age ? -1 : a.age == b.age ? 0 : 1);        System.out.println(people);    }}


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

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

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