Arrays类的使用

Arrays类

在这里插入图片描述

Arrays类的基本使用

// 1、public static String toString(类型[] arr): 返回数组的内容
        int[] arr=new int[]{11,12,13,14};
        System.out.println(Arrays.toString(arr));

        // 2、public static 类型[] copyOfRange(类型[] arr, 起始索引, 结束索引) :拷贝数组(指定范围,包前不包后)
        int[] arr1 = Arrays.copyOfRange(arr, 1, 3);
        System.out.println(Arrays.toString(arr1));

        // 3、public static copyOf(类型[] arr, int newLength):拷贝数组,可以指定新数组的长度。
        //**常用于数组的扩容
        int[] arr2 = Arrays.copyOf(arr, 10);
        System.out.println(Arrays.toString(arr2));

        // 4、public static setAll(double[] array, IntToDoubleFunction generator):把数组中的原数据改为新数据又存进去。
        double[] arr3=new double[]{128,100,278};
        // 把所有的价格都打八折,然后又存进去。,匿名内部类
        Arrays.setAll(arr3, new IntToDoubleFunction() {
            BigDecimal bigDecimal,discont;
            //applyAsDouble(value)中value获取的是当前数组的索引
            @Override
            public double applyAsDouble(int value) {
                //这里采用BigDecimal对象运算,避免失真
                bigDecimal=BigDecimal.valueOf(arr3[value]);
                discont=BigDecimal.valueOf(0.8);
            return bigDecimal.multiply(discont).doubleValue();
            }
        });
        System.out.println(Arrays.toString(arr3));

        // 5、public static void sort(类型[] arr):对数组进行排序(默认是升序排序)
        Arrays.sort(arr3);
        System.out.println(Arrays.toString(arr3));

Arrays类操作对象数组

如果数组中存储的是对象,如何排序?

对于利用Arrays类对对象数组排序时,需要在对象类中定义排序规则。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

方式一:对象类实现Comparable接口,重写compareTo方法

 student[] students=new student[4];
        students[0] = new student("蜘蛛精", 23, 169.6);
        students[1] = new student("紫霞", 26, 163.8);
        students[2] = new student("紫霞", 26, 163.8);
        students[3] = new student("至尊宝", 24, 167.5);
        Arrays.sort(students);
        System.out.println(Arrays.toString(students));

class student implements Comparable<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;
    }
    /*
    在compareTo方法中定义规则
     */
    @Override
    public int compareTo(student o) {
        //约定1:左边对象(this)大于右边对象(o) 返回正整数
        //约定2:左边对象(this)小于右边对象(o) 返回负整数
        //约定1:左边对象(this)等于右边对象(o) 返回0
        //按年龄升序排序
//        if (this.getAge()>o.getAge()){
//            return 1;
//        }else if (this.getAge()<o.getAge()){
//            return -1;
//        }
        return this.getAge()-o.getAge();//升序
//        return -(this.getAge()-o.getAge());//降序
    }

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

方式二:使用Arrays.sort()方法,传入排序数组,以及Comparator的匿名内部类,实现compare方法定义规则

student[] students = new student[4];
        students[0] = new student("蜘蛛精", 23, 169.6);
        students[1] = new student("紫霞", 26, 163.8);
        students[2] = new student("紫霞", 26, 163.8);
        students[3] = new student("至尊宝", 24, 167.5);
        Arrays.sort(students, new Comparator<student>() {
            @Override
            public int compare(student o1, student o2) {
                //约定1:左边对象(this)大于右边对象(o) 返回正整数
                //约定2:左边对象(this)小于右边对象(o) 返回负整数
                //约定1:左边对象(this)等于右边对象(o) 返回0
                //按身高升序排序
//                if (o1.getHeight()>o2.getHeight()){
//                    return 1;
//                } else if (o1.getHeight() < o2.getHeight()) {
//                    return -1;
//                }
                //这里要注意,对于小数不要直接用return o1.getHeight()-o2.getHeight();
                //因为该函数返回的是一个整数,对于差值0.1的情况返回的是1,导致了结果不对
                return Double.compare(o1.getHeight(), o2.getHeight());//升序
                //return -Double.compare(o1.getHeight(), o2.getHeight());//降序
            }
        });
        System.out.println(Arrays.toString(students));
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 Arrays 类来对数组进行排序、搜索和转换操作,以下是一些常见的使用方法: 1. 排序数组 Arrays.sort() 方法可以对数组进行排序,可以按照升序或降序排列。 示例代码: ```java int[] nums = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3}; Arrays.sort(nums); // 对数组进行升序排序 System.out.println(Arrays.toString(nums)); // 输出: [1, 1, 2, 3, 3, 4, 5, 5, 6, 9] ``` 2. 搜索数组 使用 Arrays.binarySearch() 方法可以在数组中搜索指定元素,返回元素的索引。 示例代码: ```java int[] nums = {1, 3, 4, 5, 6, 8, 9}; int index = Arrays.binarySearch(nums, 5); // 在数组中搜索元素5 System.out.println(index); // 输出: 3,表示元素5在数组中的第4个位置(从0开始计数) ``` 需要注意的是,数组必须先排序后才能使用 binarySearch() 方法进行搜索。 3. 数组复制 使用 Arrays.copyOf() 方法可以复制数组,并指定新数组的长度。 示例代码: ```java int[] nums = {1, 2, 3, 4, 5}; int[] copy = Arrays.copyOf(nums, 3); // 复制数组,指定新数组长度为3 System.out.println(Arrays.toString(copy)); // 输出: [1, 2, 3] ``` 4. 数组转换为字符串 使用 Arrays.toString() 方法可以将数组转换为字符串,方便输出到控制台或者日志文件。 示例代码: ```java int[] nums = {1, 2, 3, 4, 5}; System.out.println(Arrays.toString(nums)); // 输出: [1, 2, 3, 4, 5] ``` 以上仅是 Arrays 类的一些常见使用方法,如果有需要可以查阅 Arrays 类的 API 文档来了解更多使用方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值