数组操作工具类——Arrays类

这篇博客演示了如何使用Java的Arrays.sort方法结合Comparator接口来自定义数组的排序规则。首先展示了对整数数组的升序和降序排序,然后通过创建匿名内部类实现了Integer数组的降序排序。接着,定义了一个Student类,并基于Comparator接口实现了对学生对象数组按照身高进行降序排序的功能。
摘要由CSDN通过智能技术生成
package com.itheima.demo6;

import java.util.Arrays;
import java.util.Comparator;

public class ArraysDemo1 {
    public static void main(String[] args) {
        //目标:自定义数组的排序规则,Comparator比较器对象
        //1.Arrays的sort方法对于默认有值特性的数组是升序排序
        int[] ages = {34, 12, 50, 33, 10};
        Arrays.sort(ages);
        System.out.println(Arrays.toString(ages));


        //2.需求:降序排序!(自定义比较器对象,只能支持引用类型的排序!!)
        Integer[] ages1 = {34, 12, 61, 33, 10};
        /**
         * 参数一:被排序的数组,必须是引用类型的数组
         * 参数二:匿名内部类对象,代表了一个比较器对象
         */
      Arrays.sort(ages1, new Comparator<Integer>() {
          @Override
          public int compare(Integer o1, Integer o2) {
              //制定比较规则
            //  if(o1 > o2){
             //     return 1;
             // }else if(o1 < o2){
             //     return -1;
             // }
            //  return 0;

          //    return o1 - o2;  //升序

              return o2 - o1;//降序
          }
      });
        System.out.println(Arrays.toString(ages1));


        System.out.println("-------------------------------");

        Student[] students = new Student[3];
        students[0]  = new Student("李明", 25, 178.8);
        students[1]  = new Student("丹妮", 15, 170.8);
        students[2]  = new Student("李娜", 30, 198.8);
        System.out.println(Arrays.toString(students));

        //Arrays.sort(students);//运行崩溃
        Arrays.sort(students, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                //自己指定比较规则
              //  return o1.getAge() - o2.getAge();按年龄升序

                return Double.compare(o1.getHeight(), o2.getHeight());//比较浮点型


            }
        });
        System.out.println(Arrays.toString(students));
    }
}

建一个学生类

package com.itheima.demo6;

public class Student {
    private String name;
    private int age;
    private double height;


    public Student() {

    }

    public Student(String name, int age, double height) {
        this.name = name;
        this.age = age;
        this.height = height;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", height=" + height +
                '}';
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值