-
1.基础类型的集合排序:
-
2.实体类的集合排序传统:
-
3.Java8使用流式的排序:
前言
ArrayList是最常见最频繁我们java编程当中使用的集合类,往往进行集合操作的时候会进行排序操作,本文进行一些总结来方便大家进行操作集合类的时候能够更轻松的排序集合实现业务。
1.基础类型的集合排序:
@Test
public void sortTest(){
List<Integer>list=new ArrayList<>();
List<String>list2=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<Stu> 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<Stu>() {
@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<Stu> 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<Stu> stuSortAsc= stus.stream().sorted(Comparator.comparing(o->o.getAge())).collect(Collectors.toList());
//倒序排序
List<Stu> stuSortDesc= stus.stream().sorted(Comparator.comparing(Stu::getAge).reversed()).collect(Collectors.toList());
System.out.println("正序:"+stuSortAsc);
System.out.println("倒序:"+stuSortDesc);
}
上面就是java8中流式的集合类通过传递比较字段进行排序达到排序目的。
结尾
上面就是总结的见过的比较常用的集合的排序的方法,其中个人比较推崇的还是java8中流式的排序,已经能够满足大部分的业务场景需求,代码看着比较简洁清楚,如果你也有想法沟通的话欢迎进行留言,或者关注我的公众号:Java时间屋进行交流。
原文始发于微信公众号(Java时间屋):Java中ArrayList进行排序总结
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/251914.html