当前位置: 首页 > 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

http://www.xdnf.cn/news/612595.html

相关文章:

  • PHP简介
  • DEEPSEEK + 其他工具的玩法
  • 深入剖析Go并发性能瓶颈:pprof实战指南
  • 力扣面试150题--路径总和
  • Stable Diffusion底模对应的VAE推荐
  • Docker端口映射与容器互联
  • 基于JSP+MySQL 服装销售系统
  • 今日学习:AOP数据脱敏|线程池|方法引用的实例|背包(0-1)及子集
  • 什么是下一代DNS
  • 如何计算VLLM本地部署Qwen3-4B的GPU最小配置应该是多少?多人并发访问本地大模型的GPU配置应该怎么分配?
  • CustomSVG,一键生成SVG,文字秒变矢量图(WIN/MAC)
  • Vue3 + ThinkPHP8 + PHP8.x 生态与 Swoole 增强方案对比分析
  • ProfiNet转Ethernet/IP网关选型策略适配西门子S7-1500与三菱变频器的关键参数对比
  • ISO 20000体系:服务级别管理含义与解释
  • RBAC(基于角色的访问控制)模型详解:从原理到实践
  • 数据库三范式详解与应用建议
  • 汽车免拆诊断案例 | 2020款奔驰E300L车发动机故障灯偶尔异常点亮
  • 具身智能:OpenAI 的真正野心与未来展望
  • PyQt学习系列06-网络编程与通信协议
  • 1537. 【中山市第十一届信息学邀请赛决赛】未命名 (noname)
  • 74. 搜索二维矩阵
  • 论文Review 地面分割 GroundGrid
  • 方案精读:92页银行数据管控体系设计方案【附全文阅读】
  • Nginx中root与alias的区别及用法
  • TCP 三次握手,第一次握手报文丢失会发生什么?
  • 中国经济的结构性困境与制度性瓶颈:关键卡点深度解析
  • 信号与系统06-系统建模与AI融合
  • JVM—Java对象
  • PLC 数据采集网关 (三格电子)
  • 如何选择服务器机房托管服务?