Java Arrays类

news2025/2/3 21:04:10

J a v a   A r r a y s 类 \huge{Java \space Arrays类} Java Arrays

概述

A r r a y s 类 Arrays类 Arrays本质就是一个工具类,用于操作数组元素的。

常用API

①. toString()(重写过的toString方法)

t o S t r i n g ( ) toString() toString():返回数组的内容(以字符串形式)
在这里插入图片描述
示例:

int[] arr = {10, 2, 55, 23, 24, 100};
System.out.println(Arrays.toString(arr));

②. sort()

s o r t ( ) sort() sort():对数组中的数据进行默认升序的规则进行排序(当然这个规则可以自己定义)。并且这个排序是基于快速排序为基础的。
在这里插入图片描述
示例:

int[] arr = {10, 2, 55, 23, 24, 100};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));

结果:
在这里插入图片描述

❗❗ s o r t ( ) sort() sort()进行自定义规则排序
在这里插入图片描述
简单讲就是使用匿名内部类自定义一个排序比较器对象,作为传入的参数进行排序即可,并且前面的类型必须是引用类型
在这里插入图片描述

示例:

//使用自定义的比较器对象进行降序排序
Integer[] ages1 = {34,12,42,23};
//❗注意上面定义数组的时候基类型使用的是Integer索引类型

//匿名内部类作为自定义的比较器对象
Arrays.sort(ages1,new Comparator<Integer>(){
	@Override
	public int compare(Integer o1,Integer o2) {
		//指定比较规则
		return o2 - o1;
	}
});

System.out.println(Arrays.toString(ages1));

③. binarySearch() (二分查找)

见名知义,基于二分搜索的查找。(❗❗❗进行二分搜索的时候原数据必须提前排好序!!
在这里插入图片描述
示例:

int[] arr = {10, 2, 55, 23, 24, 100};

//查找成功的话会返回数据的位置
int index = Arrays.binarySearch(arr, 55);
System.out.println(index);


//如果查找不成功会返回:-(应该插入的位置的索引 + 1)
int index2 = Arrays.binarySearch(arr, 22);
System.out.println(index2);

❗如果查找不成功会返回:- (应该插入的位置的索引 + 1)

Sort()拓展

利用自定义规则中 c o m p a r e compare compare类的泛型来对于自定义类型的排序。
首先定义出一个 S t u d e n t Student Student类。

public class Student {
    private String name;
    private int age;
    private double height;

	getter and setter ....

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

如果想要按照学生的年纪或者身高进行排序应该怎么办呢?

//这样写程序会直接报错,因为sort()方法的针对的类型是基础类型
//不可以直接讲引用类型传入进去
Arrays.sort(students);

只能依靠 c o m p a r e compare compare中的泛型来进行自定义传入类型了。
示例:

Arrays.sort(students, new Comparator<Student>() {	//这里的泛型写的是Student,指明了就要传入Student类
            @Override
            public int compare(Student o1, Student o2) {
                // 自己指定比较规则
                // return o1.getAge() - o2.getAge(); // 按照年龄升序排序!
                // return o2.getAge() - o1.getAge(); // 按照年龄降序排序!!
                // return Double.compare(o1.getHeight(), o2.getHeight()); // 比较浮点型可以这样写 升序
                return Double.compare(o2.getHeight(), o1.getHeight()); // 比较浮点型可以这样写  降序
            }
        });
System.out.println(Arrays.toString(students));

❗:这里有一个小细节,比较身高的时候,身高的基类型是 d o u b l e double double类型,可以直接return o2.getHeight() - o1.getHeight()进行比较吗?肯定不可以!!!
比方说o2.getHeight() = 186.7o1.getHeight() = 186.2,那么 r e t u r n return return的结果就是 0.5 0.5 0.5,但是注意, c o m p a r e compare compare方法中的返回值是 i n t int int类型, 0.3 0.3 0.3直接就返回了 0 0 0,表示两个人的身高相等,这显然是错误的!!当然强转什么的也一定是错的。看一下上面的写法:

return Double.compare(o2.getHeight(), o1.getHeight());

包装类 D o u b l e Double Double类中的 c o m p a r e compare compare方法就是专门用于判断两个 d o u b l e double double类型数的大小的,这个方法的返回值是一个 i n t int int类型的值,专门用于兼容的,很好的解决了这个问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/103663.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人才招聘网 招聘系统源码找工作源代码 各行业的招聘网站门户源码

运行环境&#xff1a;VS2015SqlServer2008R2.NET4.0 系统介绍&#xff1a; 适用于各地方或者各行业的招聘网站门户&#xff0c;相当强大的人才招聘网站&#xff0c;可登陆注册、支持第三方登陆&#xff0c;强大额后台管理&#xff0c;功能全面&#xff0c;界面美观 职位和简历…

如何用yolov5 训练自己的数据

文章目录 说明数据准备划分数据集转换数据label 格式训练前准备修改图片路径修改训练配置文件 voc.yaml修改 yolo配置文件开始训练没有GPU 或显存不够的说明 利用yolov5 训练自己的数据集通常需要利用自己标注的数据进行训练 接下来记录下如何训练自己的数据 数据准备 我这用的…

【数据结构】- 面试题

面试题1. 删除链表中的节点2. 反转一个链表&#xff08;非递归解法&#xff09;3. 判断一个链表是否有环&#xff08;快慢指针&#xff09;问题&#xff1a;[快慢指针为什么一定会相遇](https://blog.csdn.net/Leslie5205912/article/details/89386769)4. 获取单链表的节点个数…

【轻量级开源ROS 的机器人设备(5)】--(3)拟议的框架——µROS节点

前文链接&#xff1a;(2条消息) 【轻量级开源ROS 的机器人设备&#xff08;5&#xff09;】--&#xff08;2&#xff09;拟议的框架——ROS节点 五、静态栈分析 在处理运行多个资源的严格受限平台时线程&#xff0c;重要的是将堆栈使用保持在最低限度。这甚至 在利用具有同质堆…

技嘉电脑怎么开启vt模式?

电脑开启vt模式后&#xff0c;可以提高主板的运行速率&#xff0c;提高性能。那就有一些使用技嘉电脑的用户问技嘉主板怎么开启vt模式&#xff1f;下面小编就来教教大家技嘉电脑开启vt模式的方法。 Intel芯片组的技嘉主板 1、一般情况下&#xff0c;也就是在电脑开机的时候&…

计算机网络、操作系统刷题笔记15

计算机网络、操作系统刷题笔记15 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle&#xff0c;尤其sq…

差分详细讲解(C++)

每日一句:平凡的我在人多的地方曾极力小心翼翼&#xff0c; 但不知从何时起 &#xff0c;我不太在意别人的目光了。比起被人觉得是个怪人&#xff0c;我现在更害怕浪费时间。 差分一、一维差分二、二维差分一、一维差分 差分就是前缀和的逆运算,如果你不懂什么是前缀和,看这里…

移动技术在仓库运营管理中的作用

作者&#xff1a;Mike Kay&#xff0c;Mendix公司合作伙伴The Config Team渠道客户经理 市面上出现越来越多的仓库管理系统&#xff08;WMS&#xff09;以满足企业更好地管理供应链的需求。想要充分挖掘WMS的优点&#xff0c;一般可以通过移动解决方案来将关键的供应链运作进…

浪潮信息工程师:带你了解设备透传虚拟机的快速启动技术优化方案

编者按&#xff1a;将物理设备通过 vfio 透传给虚拟机是虚拟化常用的技术&#xff0c;但当为虚拟机分配比较大的内存时&#xff0c;虚拟机的启动时间会明显变慢&#xff0c;可能由十几秒延长至数分钟&#xff0c;严重影响用户使用体验。本文整理自龙蜥大讲堂 51 期&#xff0c;…

小林coding阅读笔记:计算机网络基础篇-TCP\IP模型

前言 参考/导流&#xff1a; 小林coding - 2.1 TCP/IP 网络模型有哪几层&#xff1f;学习意义 学习分层设计思想构建网络层次以及各层协议作用知识体系为网络编程奠定理论基础&#xff0c;对于RPC框架or分布式系统通信都是极为重要的一节&#xff0c;是提升整个系统效率的关键…

ubunt配置samba服务器,匿名访问

1. 环境 ubuntu14.04 2. 安装samba服务器 sudo apt-get install samba 3. 配置samba文件 vim /etc/samba/smb.conf 在最后添加如下内容 [muchx]comment Shared Folder with username and passwordpath /home/muchx/sharepublic yeswritable yesvalid users muchxcre…

二、基于kubeadm安装kubernetes1.25集群第一篇

1、概述 Kubeadm 是一个提供了 kubeadm init 和 kubeadm join 的工具&#xff0c; 作为创建 Kubernetes 集群的 “快捷途径” 的最佳实践。 kubeadm 通过执行必要的操作来启动和运行最小可用集群。 按照设计&#xff0c;它只关注启动引导&#xff0c;而非配置机器。同样的&…

虹科分享 | 硬件加密U盘 | 管理密码安全的四大工具

随着网络攻击变得越来越突出&#xff0c;密码安全变得越来越重要。为了为每个帐户创建安全密码&#xff0c;许多人正在转向密码管理工具来帮助防止敏感数据的泄露。 考虑到这一点&#xff0c;以下是一些顶级密码管理工具。 领先的密码管理工具 Keeper密码管理器和数字保险库 …

kali linux手动编译网卡驱动(以mt7612u为例)

〇、linux常用命令 《Linux入门与基础》课程教案_小王小王指定辉煌的博客-CSDN博客_linux入门与基础教案 linux常用命令笔记&#xff08;二&#xff09;_小王小王指定辉煌的博客-CSDN博客 一、下载源码 查看系统版本号 uname -r uname -a cat /proc/version 或/lib/module…

手撕红黑树的构建与验证

上篇文章我们介绍了AVL树的构建与适用场景&#xff0c;我们知道了AVL树虽然查找效率很高&#xff0c;但是不适合频繁插入或删除的场景。为了解决这个问题又诞生了新的数据结构&#xff1a;红黑树 那么本篇文章就着重介绍红黑树的性质与如何构建。 1.红黑树的性质 1.结点颜色非黑…

邓俊辉 《数据结构》笔记1 绪论

邓俊辉 《数据结构》笔记1 绪论 CSDN转图床总是崩&#xff0c;如果全写完再上传一次要调好多&#xff0c;感觉很麻烦&#xff0c;所以写一点更新一点&#xff0c;会持续更新 提前发出来还有个好处就是push自己更新不会咕咕咕&#xff0c;哈哈 参考资料 MOOC 数据结构上MOOC 数…

【计算机考研408】磁盘的初始化过程

该图是磁盘物理图 关于磁盘存储器&#xff0c;[柱面号盘面号扇区号]⇔外存块号 注&#xff1a;柱面是相对位置相同的磁道所构成的面 磁盘初始化 低级初始化&#xff08;也称物理格式化&#xff09; &#xff08;1&#xff09;分扇区 &#xff08;2&#xff09;用特殊数据结构…

linux后台自定义后台服务service(以filebeat举例)

文章目录一、配置攥写1&#xff09;安装filebeat和配置相关修改2&#xff09;常用命令二、启动顺序1&#xff09;命令循序2&#xff09;systemctl添加自定义系统服务&#xff08;服务填写指南&#xff09;3&#xff09;linux的systemctl命令详解及使用教程三、遇到的坑点和报错…

谁再要你自学网络安全,请给他一大B兜

前言 作为一名6年网安工程师老菜鸟来说&#xff0c;我实在想不通&#xff0c;开发岗位那么多&#xff0c;为什么要来学网安? 在这里必须给那些准备入坑的同学泼几盆冷水&#xff01;零基础自学网络安全&#xff1f;劝你还是别做梦了&#xff01; 基础确实很简单&#xff0c…

2023火爆共享购商业模式概念、框架、基础制度

各位企业家及创业者朋友们&#xff0c;你们好。我是微三云&#xff08;陈志坤&#xff09;&#xff0c;在你打开这个文章的时候&#xff0c;先不要急&#xff0c;因为任何一个能够长久、安稳、盈利的平台&#xff0c;背后肯定有一位看准宏观方向且耐心的人。这是一个极具颠覆性…