1.Comparator对象进行排序
这种写法较为简单的1.8的写法,也可以在对象中重写排序方法以达到排序的功能,但是对代码要求较高
//按照List中对象的id属性升序
list.sort(Comparator.comparing(Person::getId))
//按照List中对象的id属性降序
list.sort(Comparator.comparing(Person::getId).reversed());
//多条件升序
list.sort(Comparator.comparing(Person::getId).thenComparing(Stu::getAge));
//id降序
list.sort(Comparator.comparing(Person::getId).reversed().thenComparing(Stu::getAge))
例子如下
加入你需要排序的对象集合如下
创建了全局常量Person集合的全局常量PERSON_LIST,以共享使用
同时重写了构造器方法,方便在创建对象后,可以使用PERSON_LIST进行排序,不需要重复的撰写set方法来为对象集合添加测试数据
/**
* @author wangli
* @create 2022-08-27 15:35
*/
@Data
@ToString
public class Person {
public final static List<Person> PERSON_LIST=new ArrayList<>();
@Excel(name = "序号")
private int id;
@Excel(name = "名字")
private String name;
@Excel(name = "年纪")
private Integer age;
public Person() {
Person person = new Person(3, "士大夫", 44);
Person person1 = new Person(5, "彩色", 34);
Person person2 = new Person(13, "设置", 31);
Person person3 = new Person(1, "是的", 86);
Person person4 = new Person(75, "衬衫", 47);
Person person5 = new Person(75, "衬衫", 25);
Person person6 = new Person(75, "衬衫", 98);
PERSON_LIST.add(person);
PERSON_LIST.add(person1);
PERSON_LIST.add(person2);
PERSON_LIST.add(person3);
PERSON_LIST.add(person4);
PERSON_LIST.add(person5);
PERSON_LIST.add(person6);
}
public Person(int id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
}
使用Comparator对对象集合排序。首先对id排序,若id一致,对age进行排序
/**
* @author wangli
* @create 2022-08-30 9:27
*/
public class TestJson {
@Test
public void ListSort(){
Person person = new Person();
PERSON_LIST.sort(Comparator.comparing(Person::getId).thenComparing(Comparator.comparing(Person::getAge)));
for (Person person1 : PERSON_LIST) {
System.out.println("person1 = " + person1);
}
}
}
运行得到结果如下,可见得到的结果是按id正序,同时id一致的情况下,按照age正序排序
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/64377.html