当前位置: 首页 > news >正文

第十节第七部分:Arrays类、自定义排序规则Comparable、自定义比较器Comparator

Arrays类常用方法

Arrays类常用方法

对象排序

对象排序

自定义排序规则时需遵守的官方约定

自定义排序规则时需遵守官方约定

代码:

代码一:Arrays类常用方法

package com.itheima.Arrays;import java.util.Arrays;
import java.util.function.IntToDoubleFunction;public class Test {public static void main(String[] args) {//1、public static string toString(类型[]arr): 返回数组的内容int[] arr = {1,2,3,4,5};System.out.println(Arrays.toString(arr));// 2、public static int[] copyOfRange(类型[] arr,起始索引,结束索引):拷贝数组(指定范围,包前不包后)int[] arr2 = Arrays.copyOfRange(arr, 1, 3);System.out.println(Arrays.toString(arr2));// 3、public static copyof(类型[] arr,int newLength):拷贝数组,可以指定新数组的长度。int[] arr3 = Arrays.copyOf(arr, 10);System.out.println(Arrays.toString(arr3));// 4、public static setAll(double[]array,IntToDoubleFunction generator):把数组中的原数据改为新数据又存进去。double[] prices = {100,300,200};//                  0   1   2//把所有的价格都打八折,然后又存进去。Arrays.setAll(prices, new IntToDoubleFunction() {@Overridepublic double applyAsDouble(int value) {//value = 0  1  2return prices[value] * 0.8;}});System.out.println(Arrays.toString(prices));// 5、public static void sort(类型[] arr):对数组进行排序(默认是升序排序)Arrays.sort(prices);System.out.println(Arrays.toString(prices));}
}

结果1

代码二:对象排序(自定义排序规则Comparable、自定义比较器Comparator)

学生类

package com.itheima.Arrays;public class Student implements Comparable<Student> {@Override// 指定比较规则// thispublic int compareTo(Student o) {// 约定1:认为左边对象大于右边对象 请您返回正整数// 约定2:认为左边对象小于右边对象 请您返回负整数// 约定3:认为左边对象 等于 右边对象 请您一定返回0// 按照年龄升序排序。
//        if (this.age>o.age){
//            return 1;
//        }
//        else if (this.age<o.age){
//            return -1;
//        }
//        return 0;//return this.age - o.age;//升序//一行代码搞定上面的if语句return  o.age - this.age;//降序}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +", height=" + height +'}';}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 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;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}

测试类(主程序)

package com.itheima.Arrays;import java.util.Arrays;
import java.util.Comparator;public class StudentsTest {public static void main(String[] args) {// 目标:掌握如何对数组中的对象进行排序。Student[] students = new Student[3];students[0] = new Student("飞鸟马时",18,165);students[1] = new Student("枣伊吕波",17,155);students[2] = new Student("珈百璃",19,150);//1、public static void sort(类型[]arr):对数组进行排序。//Arrays.sort(students);//System.out.println(Arrays.toString(students));// 2、public static <T> void sort(T[] arr,Comparator<? super T> c)// 参数一:需要排序的数组// 参数二:Comparator比较器对象(用来制定对象的比较规则)Arrays.sort(students, new Comparator<Student>() {@Overridepublic int compare(Student o1, Student o2) {// 制定比较规则了:左边对象o1 右边对象 02// 约定1:认为左边对象大于右边对象 请您返回正整数// 约定2:认为左边对象小于右边对象 请您返回负整数// 约定3:认为左边对象 等于 右边对象 请您一定返回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());//升序//一句代码顶替上述if代码return Double.compare(o2.getHeight(), o1.getHeight());//降序}});System.out.println(Arrays.toString(students));}
}

结果2

相关文章:

  • 计算机组成原理-基本运算部件定点数的运算
  • JavaScript的三大核心组成:ECMAScript、DOM与BOM
  • pytdx数据获取:在线获取和离线获取(8年前的东西,还能用吗?)
  • 分布式事务Seata-核心问题
  • 【C语言练习】058. 编写函数连接两个字符串
  • 计算机网络——每一层的用到的设备及其作用
  • 打破双亲委派模型的实践:JDBC与Tomcat的深度解析
  • 高效记单词:以load为例,让我们逐水而生
  • 数据采集器实现电源动态能耗追踪的组网配置方案
  • Java中的Switch Case多个条件
  • Vue-js
  • wsl2 不能联网
  • 从零搭建SpringBoot Web单体项目3、SpringBoot 核心组件深度解析
  • 【JVM 03-JVM内存结构之-虚拟机栈】
  • 解释一下NGINX的反向代理和正向代理的区别?
  • Nginx中root与alias的区别及用法
  • 如何使用WordPress区块(以及如何创建自定义区块)?
  • Lavavel学习笔记(Eloquent ORM/Swoole 定时任务)
  • 界面组件DevExpress WPF中文教程:Grid - 行和卡片
  • JVM监控工具
  • 九江做网站哪家好/百度客服电话人工服务热线
  • 做外贸有哪些好的免费b2b网站/网络营销logo
  • h5商城网站建设是什么/如何自己制作网站
  • 抖音引流推广软件/seo黑帽技术
  • 网站集约化建设力度/百度seo排名点击器app
  • 真人做爰视频网站免费/杭州网站优化方案