Java:Arrays类的API

Arrays

Java:Arrays类的API_第1张图片

// 1、public static string toString(类型[] arr):返回数组的内容
int[] arr = {10,20,30,40,50,60};
system.out.println(Arrays.tostring(arr));//[10,20,30,40,50,60]

// 2、public static类型[] copyOfRange(类型[] arr,起始索引,结束索引)﹔拷贝数组(指定范围,包前不包后)
int[] arr2 = Arrays.copyOfRange(arr,from:1,to:4);
system.out.println(Arrays.toString(arr2));//[20,30,40]

// 3、public static copyOf(类型[] arr, int newLength):拷贝数组,可以指定新数组的长度。
int[] arr3 = Arrays.copyOf(arr,newLength:10);//如果新定义的数组长度大于开始的数组,则会在数组后面补0;如果新定义的数组长度小于一开始的数组长度,那么后面的数据将会删掉。
system.out.println(Arrays.toString(arr3));[10,20,30,40,50,60,0,0,0,0]

int[] arr4 = Arrays.copyOf(arr,newLength:3);//如果新定义的数组长度小于一开始的数组长度,那么后面的数据将会删掉。
system.out.println(Arrays.toString(arr4));[10,20,30]

//4、public static setAll( double[] array,IntToDoubleFunction generator):把数组中的原数据改为新数据又存进去。
double[] prices = {99.8,128,100};

//把所有的价格都打八折,然后又存进去。
Arrays.setAll(prices,new IntToDoubleFunction() {
	@Override
	public double applyAsDouble(int value) {
	// value = 0   1   2
	return prices[value] * 0.8;
	}
});
system.out.println (Arrays.toString(prices));//[79.84,102.4,80.0]


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


以上都是直接用数据进行排序,那么对象怎么进行排序呢

Java:Arrays类的API_第2张图片

方式一

首先先创建一个学生类

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

    //制定比较规则
    //此时是拿对象来比较
    //this 与 o
    @Override
    public int compareTo(Student o) {
        //约定1:认为左边 大于 右边 请您返回正整数(可以是任意的正整数)
        //约定2:认为左边 小于 右边 请您返回负整数(可以是任意的负整数)
        //约定3:认为左边 等于 右边 请您一定要返回0
        //按照年龄升序排序
/*        if (this.age>o.age){
            return 1;
        }else if (this.age
   //这一段代码可以更加简便
   return this.age - o.age;//升序
   //return o.age - this.age;降序
    }

   
//重写toString 字符串方法,如果不重写,结果是一串地址
@Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", height=" + height +
                ", age=" + 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;
    }
}

在测试类中进行测试

  Student[] students =new Student[4];
        students[0] = new Student("111",167,24);
        students[1] = new Student("222",168,23);
        students[2] = new Student("333",175,25);
        students[3] = new Student("444",185,26);

        //1.public static void sort(类型[] arr): 对数组进行排序
        Arrays.sort(students);
        System.out.println(Arrays.toString(students));

在这里插入图片描述

方式二:

此时如果比较身高的话,不能直接用上面的减 ,因为身高是浮点型,返回值类型是int,如果两个人身高相差0.1的话就会出现相等的情况,所以要用浮点型。。。其他的代码和上面是一样的

Java:Arrays类的API_第3张图片

主要是用了匿名类的构造器

你可能感兴趣的:(java,排序算法,算法,开发语言,idea)