前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >常用类(五)--Math,Arrays相关

常用类(五)--Math,Arrays相关

作者头像
阑梦清川
发布2025-02-24 14:57:09
发布2025-02-24 14:57:09
660
举报
文章被收录于专栏:学习成长指南学习成长指南

常用类(四)–Math

1.和Math相关的

下面分别展示了这个求解绝对值,幂,开方,向上取整,向下取整等等诸多的方法的使用,以及使用这个random生成的是我们的0~1之间的任意的数据,如果我们想要生成这个a-b之间的任意的整数,这个时候我们就可以使用这个(int)(a+Math.random()*(b-a+1))这个公式进行对应的这个随机数的生成;

下面的这个生成的是2~7之间的随机整数,使用的就是我们提供的这个random生成随机整数的这个公式;

2.和Arrays类相关的

2.1数组元素的遍历

下面的这个方法是使用的循环的方式打印输出这个数组里面的每一个元素,也是可以实现这个遍历的效果的;

image-20241015124540814
image-20241015124540814

同样,我们可以使用这个Arrays里面的这个tostring方法,这样我们就可以去使用这个系统的方法去打印输出我们的这个数组里面的元素的内容,但是我们可以看到使用这个系统方法的时候,这个数组元素的外面实际上是需要加上这个中括号的;

image-20241015124614568
image-20241015124614568

2.2数组元素的排序

这个是直接调用这个sort方法,这个时候就会进行这个默认的排序过程,而且是按照升序的过程进行排序的,使用这个Arrays.toString方法打印输出这个数组里面的所有的元素;

image-20241015180339059
image-20241015180339059

2.3sort使用匿名内部类进行定制排序

上面是进行的升序的排列过程,我们有没有方法去控制,定制一个降序的排列过程呢,这个其实是可以实现的:

这个里面实际上是定义一个匿名内部类,comparator接口,在这个接口里面,我们先是进行这个装箱的操作,把普通的数据类型转换为包装类,然后返回两个包装类的差值(其实这个本来是一个泛型编程的,但是我们修改之后使用的是这个object子类方法);

image-20241015181929125
image-20241015181929125

我们使用return i1-i2或者是这个return i2-i1就可以对于这个升序,降序的排列的过程进行控制;

image-20241015180540998
image-20241015180540998

这个底层的执行核心过程:就是下面的这个二分搜索的方法(使用调试打断点的方式不断的进入,就可以找到这个方法),这个里面实际上时调用了这个compare这个接口的,当我们的这个return内容不一样的时候,这个if else选择就不一样,因此就可以实现定制的排序的效果;

image-20241015180852050
image-20241015180852050

2.4模拟实现sort排序过程

这个里面需要我们自己实现bubble02的冒牌排序的方法,这个方法里面是有两个参数的,第二个参数就是我们的comparator接口,我们的main方法里面对于这个接口里面的方法进行重写,这样我们通过动态的绑定机制就可以去调用我们自己实现的这个接口里面的compare方法,从而实现定制排序;

image-20241015182406400
image-20241015182406400

2.5Arrays的其他的方法

下面的这个就是二分查找的方法的调用,前提是我们的这个数组里面的元素是有序的;

image-20241015183043090
image-20241015183043090

第一个参数是我们的数组的名字,第二个参数就是我们的这个对应的想要查找的数据,返回值就是这个数据的下标,不存在返回负数;

下面的这个是负数的计算方法,low就是原来应该存在的位置,例如我们输入的这个8,原来应该是第七个位置,加上1之后取负数,就是-8;

image-20241015183001963
image-20241015183001963

下面的这个是进行的数组元素的拷贝,拷贝的长度可以我们自己人为设定:

image-20241015183509751
image-20241015183509751

下面的fill是填充的方法,这个方法的意思就是我们需要把这个数组里面的所有的元素换成我们的填充元素;

image-20241015183715472
image-20241015183715472

equlas方法判断两个数组元素的内容是不是完全一样的,返回的类型是bollean类型的;

image-20241015183828221
image-20241015183828221

2.6Arrays的综合练习排序案例

我们下面分别按照书籍价格和书籍的名字的长度进行排序:

我们首先需要去编写这个类,这个类需要有构造器,构造函数,以及这个重写的tostring方法(方便我们打印输出这个比较之后的结果)

image-20241015195656604
image-20241015195656604

创建这个对象,这个对象就是我们后续进行比较的依据,我们还是重写这个里面的sort方法,使用的就是我们的匿名内部类,实现这个compare方法;

getprice返回的是这个double类型的数据,但是我们的这个接受的返回值是int类型的,这个时候我们就需要进行这个判断,返回我么自己的这个int数值(-1,1还是0),因为这个底层代码就是判断我们的这个方法的返回值是大于0还是小于0的;

image-20241015195637496
image-20241015195637496

下面的这个就是对于这个书名的长度进行判断,因为这个length就是一个int类型的,和我们的这个重写的compare方法的这个返回值类型是一样的,因此这个时候我们就可以不像上面的那样进行这个判断,而是把这个数值直接返回即可;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.和Math相关的
  • 2.和Arrays类相关的
    • 2.1数组元素的遍历
    • 2.2数组元素的排序
    • 2.3sort使用匿名内部类进行定制排序
    • 2.4模拟实现sort排序过程
    • 2.5Arrays的其他的方法
    • 2.6Arrays的综合练习排序案例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档