6.Java中ArrayList进行排序总结
文章目录
- 前言
- 1.基础类型的集合排序:
- 2.实体类的集合排序传统:
- 3.Java8使用流式的排序:
- 结尾
前言
ArrayList是最常见最频繁我们java编程当中使用的集合类,往往进行集合操作的时候会进行排序操作,本文进行一些总结来方便大家进行操作集合类的时候能够更轻松的排序集合实现业务。
1.基础类型的集合排序:
@Test
public void sortTest(){
Listlist=new ArrayList<>();
Listlist2=new ArrayList<>();
list.add(10);
list.add(1);
list.add(9);
list.add(2);
Collections.sort(list);
System.out.println(list);
Collections.reverse(list);
System.out.println(list);
list2.add("2021-06-10 13:56:48");
list2.add("2021-06-11 13:56:48");
Collections.sort(list2);
System.out.println(list2);
Collections.reverse(list2);
System.out.println(list2);
}
此为基础类的排序,正序排序和倒序排序等,使用起来其实是非常方便的。
2.实体类的集合排序传统:
@Test
public void stuSortTest(){
List stus = new ArrayList<>();
Stu stu1 = new Stu();
Stu stu2 = new Stu();
Stu stu3 = new Stu();
stu1.setName("张三");
stu1.setAge(30);
stu2.setName("李四");
stu2.setAge(20);
stu3.setName("王五");
stu3.setAge(60);
stus.add(stu1);
stus.add(stu2);
stus.add(stu3);
//对users按年龄进行排序
Collections.sort(stus, new Comparator() {
@Override
public int compare(Stu o1, Stu o2) {
// 升序
//return o1.getAge()-o2.getAge();
//return o1.getAge()-o2.getAge();
// 降序
return o2.getAge()-o1.getAge();
// return o2.getAge().compareTo(o1.getAge());
}
});
// 输出结果
System.out.println(stus);
}
此为常用的比较传统的传递比较器的比较实体类的方法使用。当然如果是多条件的话直接在比较器中compare进行计算排序则可以,基本的比较规则为大于的在前面,小于的在后面。
3.Java8使用流式的排序:
@Test
public void stuSortTest2(){
List stus = new ArrayList<>();
Stu stu1 = new Stu();
Stu stu2 = new Stu();
Stu stu3 = new Stu();
stu1.setName("张三");
stu1.setAge(30);
stu2.setName("李四");
stu2.setAge(20);
stu3.setName("王五");
stu3.setAge(60);
stus.add(stu1);
stus.add(stu2);
stus.add(stu3);
//正序排序
List stuSortAsc= stus.stream().sorted(Comparator.comparing(o->o.getAge())).collect(Collectors.toList());
//倒序排序
List stuSortDesc= stus.stream().sorted(Comparator.comparing(Stu::getAge).reversed()).collect(Collectors.toList());
System.out.println("正序:"+stuSortAsc);
System.out.println("倒序:"+stuSortDesc);
}
上面就是java8中流式的集合类通过传递比较字段进行排序达到排序目的。
结尾
上面就是总结的见过的比较常用的集合的排序的方法,其中个人比较推崇的还是java8中流式的排序,已经能够满足大部分的业务场景需求,代码看着比较简洁清楚,如果你也有想法沟通的话欢迎进行留言,或者关注我的公众号:Java时间屋进行交流。