1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Java对List集合排序

Java对List集合排序

时间:2022-08-16 06:03:35

相关推荐

Java对List集合排序

1.单属性变量集合排序,如LIst<Integer>

List<Integer> intList = new ArrayList<>();intList.add(54);intList.add(7674);intList.add(636);intList.add(4325);intList.add(21);intList.add(432143);Collections.sort(intList);for (Integer i : intList) {System.out.print(i + " ");}

结果是21 54 636 4325 7674 432143

Collections类提供了对集合操作的一些方法,注意是Collections而不是Collection,后者是集合的顶级接口。

使用Collerctions类的sort()方法实现升序排序,相反的,方法reverse()则实现降序排序。

2.多属性对象集合排序,如List<Student>

Student类就不写了,共三个属性,配上get,set就行。

List<Student> students = new ArrayList<>();students.add(new Student("狗蛋",90,180));students.add(new Student("黑子",80,165));students.add(new Student("旺财",91,170));students.add(new Student("翠花",80,182));students.add(new Student("铁牛",75,180));students.add(new Student("大根",82,172));students.add(new Student("傻蛋",90,168));students.add(new Student("富贵",80,178));System.out.println("原始数据:");for (Student s : students) {System.out.println(s.getName() + " " + s.getScore() + " " + s.getHeight());}System.out.println("按照分数升序排序:");students.sort(paring(Student::getScore));for (Student s : students) {System.out.println(s.getName() + " " + s.getScore() + " " + s.getHeight());}

抄个Comparator的介绍放这里:

强行对某个对象collection进行整体排序的比较函数。可以将 Comparator 传递给 sort 方法(如Collections.sort或 Arrays.sort),从而允许在排序顺序上实现精确控制。还可以使用 Comparator 来控制某些数据结构(如有序 set或有序映射)的顺序,或者为那些没有自然顺序的对象 collection 提供排序。当且仅当对于一组元素 S 中的每个e1和e2 而言,pare(e1, e2)==0与 e1.equals(e2) 具有相等的布尔值时,Comparator c 强行对 S 进行的排序才叫做与 equals 一致的排序。

关键字"::"来自Java8,可以通过`::` 关键字来访问类的构造方法,对象方法,静态方法。

如果要对多个属性进行排序,继续向后添加排序规则即可。

// 先按照score的升序,然后按照height的升序students.sort(paring((Student::getScore)).thenComparing(Student::getHeight).reversed());// 先按照score的升序,然后按照height的降序students.sort(paring((Student::getScore)).thenComparing(Student::getHeight).reversed().reversed());// 先按照score的降序,然后按照height的降序students.sort(paring((Student::getScore)).reversed().thenComparing(Student::getHeight).reversed().reversed());

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。