当前位置:   article > 正文

Java语法---使用sort进行排序_javasort降序怎么用

javasort降序怎么用

目录

一、升序

二、降序

(1)类实现接口

(2)匿名内部类

三、自定义排序规则

四、集合中的sort排序

(1)升序

(2)降序

(3)自定义排序 


一、升序

升序排序就是按照从小到大排序。(注意,想进行排序的话,基本数据类型要换成包装类,就像int型要写成Integer)

  1. public static void main(String[] args) {
  2. Integer[] a={1,19,20,3,12,100,987,32};
  3. System.out.print("排序前: ");
  4. for(int i:a){
  5. System.out.print(i+" ");
  6. }
  7. System.out.println();
  8. System.out.print("排序后(升序): ");
  9. //开始使用sort进行升序排序
  10. Arrays.sort(a);
  11. for(int i:a){
  12. System.out.print(i+" ");
  13. }
  14. }

二、降序

想要使用sort进行降序排序,我们需要使用Comparator接口,这里有两种方式可以实现,一种是类实现接口,一种是匿名内部类,我们都讲一下。

(1)类实现接口

  1. //程序入口
  2. public class main1 {
  3. public static void main(String[] args) {
  4. Integer[] a={1,19,20,3,12,100,987,32};
  5. System.out.print("排序前: ");
  6. for(int i:a){
  7. System.out.print(i+" ");
  8. }
  9. System.out.println();
  10. System.out.print("排序后(降序): ");
  11. Arrays.sort(a,new myCom());
  12. for(int i:a){
  13. System.out.print(i+" ");
  14. }
  15. }
  16. }
  17. //排序类
  18. class myCom implements Comparator<Integer>{
  19. @Override
  20. public int compare(Integer o1, Integer o2) {
  21. return o2-o1;
  22. }
  23. }

(2)匿名内部类

  1. public static void main(String[] args) {
  2. Integer[] a={1,19,20,3,12,100,987,32};
  3. System.out.print("排序前: ");
  4. for(int i:a){
  5. System.out.print(i+" ");
  6. }
  7. System.out.println();
  8. System.out.print("排序后(降序): ");
  9. Arrays.sort(a, new Comparator<Integer>() {
  10. @Override
  11. public int compare(Integer o1, Integer o2) {
  12. return o2-o1;
  13. }
  14. });
  15. for(int i:a){
  16. System.out.print(i+" ");
  17. }
  18. }

 

三、自定义排序规则

 这里我们自定义一个学生类,有name属性和age属性,我们按照年龄从大到小排序,如果年龄相等,就按照名字降序。

 

  1. public static void main(String[] args) {
  2. student[] students=new student[5];
  3. //这里创建对象数组的时候,还要new一下,别忘了!这个很容易忽略,当然,你也可以声明数组的时候就初始化数据
  4. students[0]=new student();
  5. students[0].setAge(10);
  6. students[0].setName("bac");
  7. students[1]=new student();
  8. students[1].setAge(10);
  9. students[1].setName("cac");
  10. students[2]=new student();
  11. students[2].setAge(10);
  12. students[2].setName("aac");
  13. students[3]=new student();
  14. students[3].setAge(18);
  15. students[3].setName("op");
  16. students[4]=new student();
  17. students[4].setAge(8);
  18. students[4].setName("lisi");
  19. System.out.println(students[0]);
  20. System.out.print("排序之前");
  21. for(int i=0;i<students.length;i++){
  22. System.out.println(students[i].getName()+" "+students[i].getAge());
  23. }
  24. Arrays.sort(students, new Comparator<student>() {
  25. @Override
  26. public int compare(student o1, student o2) {
  27. if(o1.getAge()==o2.getAge()){
  28. return o2.getName().compareTo(o1.getName());
  29. }
  30. return o2.getAge()-o1.getAge();
  31. }
  32. });
  33. System.out.println();
  34. for(int i=0;i<students.length;i++){
  35. System.out.println(students[i].getName()+" "+students[i].getAge());
  36. }
  37. }

四、集合中的sort排序

前面介绍的sort是数组的排序,集合中其实也一样,只不过Arrays.sort换成了Collections.sort

(1)升序

  1. public static void main(String[] args) {
  2. List<Integer> integerList=new ArrayList<>();
  3. integerList.add(18);
  4. integerList.add(10);
  5. integerList.add(20);
  6. integerList.add(3);
  7. integerList.add(17);
  8. System.out.println("排序前");
  9. for(Integer i:integerList){
  10. System.out.println(i);
  11. }
  12. System.out.println("排序后");
  13. //进行升序排序
  14. Collections.sort(integerList);
  15. for(Integer i:integerList){
  16. System.out.println(i);
  17. }
  18. }

(2)降序

与上面一样有两种方式实现,匿名内部类和类的实现接口,这里我就只写了匿名内部类的方法,另外一种可以看上面的数组排序。

  1. public static void main(String[] args) {
  2. List<Integer> integerList=new ArrayList<>();
  3. integerList.add(18);
  4. integerList.add(10);
  5. integerList.add(20);
  6. integerList.add(3);
  7. integerList.add(17);
  8. System.out.println("排序前");
  9. for(Integer i:integerList){
  10. System.out.println(i);
  11. }
  12. System.out.println("排序后");
  13. Collections.sort(integerList, new Comparator<Integer>() {
  14. @Override
  15. public int compare(Integer o1, Integer o2) {
  16. return o2-o1;
  17. }
  18. });
  19. for(Integer i:integerList){
  20. System.out.println(i);
  21. }
  22. }

(3)自定义排序 

还是和上面的需求一样,年龄从小到大排序,年龄一样按照名字大的在前面

  1. public static void main(String[] args) {
  2. List<student> students=new ArrayList<>();
  3. students.add(new student("abc",19));
  4. students.add(new student("cbc",19));
  5. students.add(new student("bbc",19));
  6. students.add(new student("abc",9));
  7. students.add(new student("abc",30));
  8. System.out.println("排序前");
  9. for(student i:students){
  10. System.out.println(i);
  11. }
  12. System.out.println("排序后");
  13. //进行自定义排序
  14. Collections.sort(students, new Comparator<student>() {
  15. @Override
  16. public int compare(student o1, student o2) {
  17. if(o1.getAge()==o2.getAge()){
  18. return o2.getName().compareTo(o1.getName());
  19. }
  20. return o2.getAge()-o1.getAge();
  21. }
  22. });
  23. for(student i:students){
  24. System.out.println(i);
  25. }
  26. }

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号