Arrays

Arrays:用来操作数组的一个工具类

Arrays类提供的常见方法:

|----------------------------------------------------------------------|------------------|
| 方法名 | 说明 |
| public static String toString(类型[ ] arr) | 返回数组的内容 |
| public static int[] copyOfRange(类型[ ] arr,起始索引,结束索引) | 拷贝数组(指定范围) |
| public static copyOf(类型[ ]arr,int newLethon) | 拷贝数组 |
| public static setAll(double [ ]arr,intToDoubleFuncation generator) | 把数组中的原数据改为新数据 |
| public static void sort (类型[ ]arr) | 对数组进行排序(默认是升序排序) |

复制代码
import java.util.Arrays;
import java.util.function.IntToDoubleFunction;

public class Test1 {
    public static void main(String[] args) {
        int []arr1={11,22,33};
        //public static String toString(类型[ ] arr):	返回数组的内容
        System.out.println(Arrays.toString(arr1));
        //public static int[] copyOfRange(类型[ ] arr,起始索引,结束索引):	拷贝数组(指定范围)包前不包后
        int [] arr3=Arrays.copyOfRange(arr1,0,1);
        System.out.println(Arrays.toString(arr3));
        //public static copyOf(类型[ ]arr,int newLethon):	拷贝数组
        int [] arr4=Arrays.copyOf(arr1,3);
        System.out.println(Arrays.toString(arr4));
        //public static setAll(double [ ]arr,intToDoubleFuncation generator):把数组中的原数据改为新数据
        double[]arr2={99.8,66.8,33.9};
        Arrays.setAll(arr2, new IntToDoubleFunction() {
                    @Override
                    public double applyAsDouble(int value) {
                        return arr2[value]*0.68;
                    }
                }
        );
        System.out.println(Arrays.toString(arr2));
        //public static void sort (类型[ ]arr):	对数组进行排序(默认是升序排序)
        Arrays.sort(arr1);
        System.out.println(Arrays.toString(arr1));
    }
}

如果数组中存储的是对象,该怎么排序?

|-----|-----------------------------------------------------------------------------------------------------------------------------------|
| 方式一 | 让该对象的类实现Comparable(比较规则)接口,然后重写CompareTo方法,自己来制定比较规则 |
| 方式二 | 使用下面这个sort方法,创建Comparator比较器接口的匿名内部类对象,然后自己制定规则 public static <T>void sort (T[ ]arr,Comparator<?super T >c)对数组进行排序(支持自定义规则) |

复制代码
public class Student implements Comparable<Student>{
    private String name;
    private double height;
    private int age;

    public Student() {
    }

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

    public String getName() {
        return name;
    }

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

    public double getHeight() {
        return height;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
//这个方法是用来给sort方法内部进行比较的
    //制定比较规则
    //this(比较者) o(被比较者)谁调这个方法谁就是比较者
    @Override
    public int compareTo(Student o) {
        //约定1:如果左边对象  大于  右边对象  返回正整数
        //约定2:如果左边对象  小于  右边对象  返回负整数
        //约定2:如果左边对象  等于  右边对象  返回0
        //按照年龄排序
        //更简便的一种方法
        //return this.age-o.age;//升序
        //return o.age-this.age;//降序
        if (this.age>o.age) {
            return 1;
        }else if (this.age<o.age){
            return -1;
        }
        return 0;
    }


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

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

public class Test2 {
    public static void main(String[] args) {
        //目标:掌握如何对数组中的对象进行排序
       Student []Students=new Student[4];
       Students[0]=new Student("楚北捷",1.88,28);
       Students[1]=new Student("周翊然",1.83,24);
       Students[2]=new Student("于和伟",1.86,48);
       Students[3]=new Student("肖战",1.87,31);
       //public static void sort (类型【】arr):对数组进行排序
        Arrays.sort(Students);
        System.out.println(Arrays.toString(Students));
        //方式二	使用下面这个sort方法,创建Comparator比较器接口的匿名内部类对象,然后自己制定规则public static <T>void sort (T[ ]arr,Comparator<?super T >c)对数组进行排序(支持自定义规则)
        Arrays.sort(Students, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                /*
                制定比较规则:     左边对象o1;右边对象o2
                //约定1:如果左边对象  大于  右边对象  返回正整数
                //约定2:如果左边对象  小于  右边对象  返回负整数
                //约定2:如果左边对象  等于  右边对象  返回0
                if (o1.getHeight()> o2.getHeight()) {
                    return 1;
                }else if (o1.getHeight()< o2.getHeight()){
                        return -1;
                }
                return 0;//升序

                 */
                return Double.compare(o1.getHeight(), o2.getHeight());
            }
        });
    }
}
相关推荐
ThisIsMirror8 分钟前
leetcode 452 Arrays.sort()排序整数溢出、Integer.compare(a[1], b[1])成功的问题
算法·leetcode
王老师青少年编程9 分钟前
csp信奥赛c++之状压枚举
数据结构·c++·算法·csp·信奥赛·csp-s·状压枚举
wayz1120 分钟前
数据分析中的异常值处理:MAD
算法·数据挖掘·数据分析
飞Link24 分钟前
LangGraph 核心架构解析:节点 (Nodes) 与边 (Edges) 的工作机制及实战指南
java·开发语言·python·算法·架构
Mr_Xuhhh1 小时前
深入理解二叉树:从数据结构到算法实战
数据结构·算法
xuhaoyu_cpp_java1 小时前
Boyer-Moore 投票算法
java·经验分享·笔记·学习·算法
kobesdu1 小时前
FAST-LIO2 + 蓝海M300激光雷达:从建图到实时栅格图的完整流程
算法·机器人·ros·slam·fast lio
x_xbx1 小时前
LeetCode:438. 找到字符串中所有字母异位词
算法·leetcode·职场和发展
MThinker1 小时前
K230+canMV+micropython实现低成本MLX90640红外热成像测温模块(续)
算法·智能硬件·micropython·canmv·k230
小菜鸡桃蛋狗1 小时前
C++——string(下)
算法