美文网首页
java自定义类排序

java自定义类排序

作者: 何甜甜在吗 | 来源:发表于2018-02-25 21:24 被阅读0次

如果想对自定义的类进行自定义排序的话,这个类就必须实现Comparable或者Comparator接口。

Example:首先定义一个person类,里面有字段name和age。先按name排序,name相同在按照age排序。注:使用了Lombok插件,如何使用可以参考这篇文章:lombok插件的使用

1.1:Comparable接口
person.java

@Builder
@Data
public class Person implements Comparable<Person> {
    private String name;
    private int age;

    /**
     * 1.先比较name
     * 2.name一样比较age
     * */
    @Override
    public int compareTo(Person o) {
        int temp = this.name.compareTo(o.name);
        return temp == 0 ? this.age - o.age : temp ;
    }
    
}

测试:

@Test
    public void testComparable() {
        List<Person> personList = new ArrayList<>(
                Arrays.asList(new Person("Bob", 17),
                        new Person("Anna", 17),
                        new Person("Anna", 16)));
        System.out.println("排序前:" + personList);
        Collections.sort(personList);
        System.out.println("排序后:" + personList);
    }

1.2:Comparator接口
person1.java

@Builder
@Data
public class Person2 implements Comparator<Person2> {
    private String name;
    private int age;
    
    @Override
    public int compare(Person2 o1, Person2 o2) {
        int temp = o1.name.compareTo(o2.name);
        return temp == 0 ? o1.age - o2.age : temp ;
    }
}

两个接口差别并不是特别大,
1):Comparable接口在java.lang包下,自动导入,Comparator接口在java.util包下。很多类,比如String等已经实现了Comparable接口自定义了排序规则。
2):Collections.sort()排序只针对实现Comparable接口的类

相关文章

  • Objective-C基础学习之NSArray排序

    Foundation自带类排序 自定义类排序

  • Comparable接口和Comparator接口

    使用Array或者Collection的排序方法时,自定义类需要实现Java提供Comparable接口的comp...

  • java自定义类排序

    如果想对自定义的类进行自定义排序的话,这个类就必须实现Comparable或者Comparator接口。 Exam...

  • java8的List排序写法

    java8的List 的自定义排序 通过CreateTime属性排序 List userList = find...

  • 认识java(一)

    原创 java输入输出 java方法 java常用容器类和接口 外部排序接口:compatator内部排序接口:c...

  • 排序

    在Java中自定义排序 public int compare(Integer a, Integer b) { re...

  • java基础算法系列

    java的经典排序讲解以及简单优化 java面试中一般都会遇到让你手写三大排序伪代码的场景。 java排序分四类 ...

  • Java泛型

    参考:Java知识点总结(Java泛型) 自定义泛型类 自定义泛型接口 非泛型类中定义泛型方法 继承泛型类 通配符...

  • java 实现排序算法之「插入排序」

    java 实现排序算法系列 这是 Java 实现排序算法的第三篇文章——插入排序算法。插入排序可以说成是「一类」简...

  • Comparator自定义排序的使用

    java对于集合的自定义排序方法有: Arrays.sort(T[],Comparator c); Collect...

网友评论

      本文标题:java自定义类排序

      本文链接:https://www.haomeiwen.com/subject/zshdxftx.html