java自定义比较器,常用的有两种实现方式Comparable和Comparator
Comparable和Comparator的主要区别在于:
(1). Comparator 和 Comparable都是Java中的内部比较器接口,都是用来实现对一个自定义的类进行排序
(2). 不同的是实现Comparable接口是定义在类的内部,比较代码需要嵌入类的内部结构中
(3). Comparator 实现在类的外部,单独实现第一个比较器,不需要对原来的类进行结构上的变化,属于无侵入式的
这里主要讲解Comparable 的使用方式,以下是实现代码,用起来很简单
1. 创建一个对象PersonVO,然后实现Comparable接口
@Data public class PersonVO implements Comparable<PersonVO> { private int age; private String name; @Override public int compareTo(PersonVO personVO) {
// 返回的值分三种情况:负数, 零 , 正数 return this.age - personVO.age; } }
2. 在使用的时候调用Collections.sort 排序方法
@Test public void testPerson(){ List<PersonVO> list = new ArrayList<>(); PersonVO p1 = new PersonVO(); p1.setAge(18); p1.setName("我18岁"); PersonVO p2 = new PersonVO(); p2.setAge(27); p2.setName("我27岁"); PersonVO p3 = new PersonVO(); p3.setAge(9); p3.setName("我9岁"); PersonVO p4 = new PersonVO(); p4.setAge(30); p4.setName("我30岁"); list.add(p1); list.add(p2); list.add(p3); list.add(p4); Collections.sort(list , PersonVO::compareTo); System.out.println(list.toString()); }