Java学习笔记(七)——操作数组工具类Arrays

文章目录

    • Arrays
      • Arrays.toString()
      • Arrays.binarySearch()
      • Arrays.copyOf()
      • Arrays.copyOfRange()
      • Arrays.fill()
      • Arrays.sort()
        • 升序排序
        • 降序排序

Arrays

操作数组的工具类。

在这里插入图片描述

Arrays.toString()

import java.util.Arrays;public class test40 {public static void main(String[] args) {int[] ints = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};String str = Arrays.toString(ints);System.out.println(str);  //[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}
}

在这里插入图片描述

Arrays.binarySearch()

import java.util.Arrays;public class test40 {public static void main(String[] args) {int[] ints = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int index = Arrays.binarySearch(ints, 10);System.out.println(index);}
}

在这里插入图片描述

在这里插入图片描述

Arrays.copyOf()

如果新数组的长度小于原始数组的长度——部分拷贝

如果新数组的长度等于原始数组的长度——完全拷贝

如果新数组的长度大于原始数组的长度——完全拷贝+补上默认初始化值0

import java.util.Arrays;public class test40 {public static void main(String[] args) {int[] ints = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int[] ints1 = Arrays.copyOf(ints, 5);System.out.println(Arrays.toString(ints1));  //[1, 2, 3, 4, 5]}
}

在这里插入图片描述

Arrays.copyOfRange()

范围:包头不包尾

import java.util.Arrays;public class test40 {public static void main(String[] args) {int[] ints = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int[] ints1 = Arrays.copyOfRange(ints, 3, 5);System.out.println(Arrays.toString(ints1));  //[4, 5]}
}

在这里插入图片描述

Arrays.fill()

import java.util.Arrays;public class test40 {public static void main(String[] args) {int[] ints=new int[10];Arrays.fill(ints,0);System.out.println(Arrays.toString(ints));  //[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}
}

在这里插入图片描述

Arrays.sort()

默认使用升序排序。

底层使用的是快速排序。

import java.util.Arrays;public class test40 {public static void main(String[] args) {int[] ints = {5, 4, 8, 2, 4, 7, 6, 3, 0, 1, 9, 10};Arrays.sort(ints);System.out.println(Arrays.toString(ints));  //[0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10]}
}

在这里插入图片描述

要想改变排序顺序:

在这里插入图片描述

第二个参数是一个接口,在调用方法的时候,要传递这个接口的实现类对象,作为排序的规则。

底层原理:插入排序+二分查找

默认把0索引的数据当作是有序的序列,1索引到最后是无序的序列。

遍历无序序列里面的每一个元素,假设当前遍历的元素是A,

利用二分查找确定A的插入点,拿着A跟插入点的元素进行比较,

比较的规则是Comparator<>(),

如果方法返回值是负数,拿着A继续跟前面的数据进行比较,

如果方法返回值是正数,拿着A继续跟后面的数据进行比较,

如果方法返回值是0,拿着A继续跟后面的数据进行比较,

直到确定A的最终位置。

compare(Integer o1, Integer o2):

o1:表示在无序序列中,遍历得到的每一个元素

o2:有序序列中的元素

返回值:

负数:表示当前要插入的元素小,放在前面

正数:表示当前要插入的元素大,放在后面

0:表示当前要插入的元素跟当前元素一样,也是放在后面

升序排序
import java.util.Arrays;
import java.util.Comparator;public class test40 {public static void main(String[] args) {Integer[] integers = {5, 4, 8, 2, 4, 7, 6, 3, 0, 1, 9, 10};Arrays.sort(integers, new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o1-o2;}});System.out.println(Arrays.toString(integers));  //[0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10]}
}
降序排序
import java.util.Arrays;
import java.util.Comparator;public class test40 {public static void main(String[] args) {Integer[] integers = {5, 4, 8, 2, 4, 7, 6, 3, 0, 1, 9, 10};Arrays.sort(integers, new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o2-o1;}});System.out.println(Arrays.toString(integers));  //[10, 9, 8, 7, 6, 5, 4, 4, 3, 2, 1, 0]}
}

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

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

相关文章

【Docker篇】详细讲解容器相关命令

&#x1f38a;专栏【Docker】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【如愿】 &#x1f384;欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f6f8;容器&#x1f339;相关命令&#x1f354;案例⭐创建并运…

第四课:GPT2

文章目录 第四课&#xff1a;GPT21、学习总结&#xff1a;GPT2的学习目标和概念任务调节零样本学习和零短任务迁移 模型结构GPT-2 自注意力掩码实现1- 创建qkv2- 评分3- 合并注意力头4- Projecting 课程ppt及代码地址 2、学习心得&#xff1a;3、经验分享&#xff1a;4、课程反…

AWS 专题学习 P8 (ECS、EKS、Lambda、CloudFront、DynamoDB)

文章目录 什么是 Docker&#xff1f;操作系统上的 DockerDocker 镜像存储Docker vs. Virtual MachinesDocker 入门AWS 中的 Docker Containers Management Amazon ECSEC2 Launch TypeFargate Launch TypeECS 的 IAM RolesLoad Balancer IntegrationsData Volumes (EFS)ECS Serv…

Object.prototype.toString.call个人理解

文章目录 这段代码的常见用处参考文献&#xff1a; 拆分理解1、Object.prototype.toString小问题参考文献&#xff1a; 2、call函数的作用参考文献 3、继续深入一些&#xff08;这部分内容是个人理解&#xff0c;没有明确文献支撑&#xff09; 这段代码的常见用处 Object.prot…

easy Exsel导出

目录 一、首先引入依赖 二、然后封装一个VO 三、Controller层 四、Service实现类 引用样式 自适应列宽 自适应行高 五、测试 postman ​编辑 浏览器 异常 分配到这个任务了&#xff0c;写个小demo记录下&#xff0c;具体可参考EasyExcel官方文档 我用的是web上传…

CCC数字钥匙设计【NFC基础】--LPCD相关介绍

关于NFC卡检测&#xff0c;主要可以分成两个步骤&#xff1a; 1、LPCD低功耗检测&#xff0c;唤醒NFC读卡器。 2、唤醒后&#xff0c;NFC读卡器或MCU控制器轮询Type A、Type B、Type F、Type V&#xff08;ISO15693&#xff09;等卡类型。 本文主要介绍LPCD相关功能&#xff…

设备管理——WinCC 给你神助功

要实现“设备高效”&#xff0c;就必须“管之有道”&#xff0c;来自设备层的数据支撑将是必不可少的&#xff0c;提高设备效能的2个关键在于降低平时停机时间 (MDT) 和提高平均无故障时间 (MTBF)。通常来说&#xff0c;设备维护可大致可分为三个层次&#xff1a;纠正性维护&am…

c++ mysql数据库编程(linux系统)

ubuntu下mysql数据库的安装 ubuntu安装mysql&#xff08;图文详解&#xff09;-CSDN博客https://blog.csdn.net/qq_58158950/article/details/135667062?spm1001.2014.3001.5501 项目目录结构 数据库及表结构 public.h //打印错误信息 #ifndef PUBLIC_h #define PUBLIC_H…

【详解】通讯录项目

目录 通讯录项目要求&#xff1a; 引言&#xff1a; 步骤如下&#xff1a; 用户的数据类型&#xff1a; 初始化循序表&#xff1a; 菜单&#xff1a; 添加联系人&#xff1a; 删除联系人&#xff1a; 修改联系人&#xff1a; 查找联系人&#xff1a; 查看通讯录&…

《WebKit 技术内幕》之七(1): 渲染基础

《WebKit 技术内幕》之七&#xff08;1&#xff09;&#xff1a; 渲染基础 WebKit的布局计算使用 RenderObject 树并保存计算结果到 RenderObject 树。 RenderObject 树同其他树&#xff08;如 RenderLayer 树等&#xff09;&#xff0c;构成了 WebKit 渲染的为要基础设施。 1…

【RT-DETR有效改进】Google | EfficientNetV1一种超轻量又高效的网络 (附代码 + 添加教程)

前言 大家好&#xff0c;我是Snu77&#xff0c;这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进&#xff0c;内容持续更新&#xff0c;每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本&#xff0c;同时修改内容也支持Re…

python算法与数据结构---排序和归并排序

学习目标 掌握归并排序的基本原理使用python语言解答归并排序题目 归并排序 原理及过程 将两个有序的数组合并成一个有序数组称为从上往下分解&#xff1a;把当前区间一分为二&#xff0c;直至分解为若干个长度为1的子数组从上往下的合并&#xff1a;两个有序的子区域两两向…

Pytest 测试框架与Allure 测试报告——Allure2测试报告-L1

目录&#xff1a; allure2安装 Allure2介绍Allure2报告展示Allure2报告展示-首页概览Allure2报告展示-用例详情页Allure2安装Allure2下载与安装Allure环境验证插件安装-Python插件安装-Java验证插件安装-Javaallure2运行方式 生成测试报告流程使用Allure2运行方式-Python使用A…

大模型关键技术:上下文学习、思维链、RLHF、参数微调、并行训练、旋转位置编码、模型加速、大模型注意力机制优化、永久记忆、LangChain、知识图谱、多模态

大模型关键技术 大模型综述上下文学习思维链 CoT奖励建模参数微调并行训练模型加速永久记忆&#xff1a;大模型遗忘LangChain知识图谱多模态大模型系统优化AI 绘图幻觉问题从 GPT1 - GPT4 拆解GPTs 对比主流大模型技术点旋转位置编码层归一化激活函数注意力机制优化 大模型综述…

四种方法将 Docker Registry 迁移至 Harbor

Registry Docker Distribution Docker Distribution 是第一个是实现了打包、发布、存储和镜像分发的工具&#xff0c;起到 docker registry 的作用。&#xff08;目前 Distribution 已经捐赠给了 CNCF&#xff09;。其中 Docker Distribution 中的 spec 规范后来也就成为了 O…

Semaphone应用源码分析

Semaphone应用&源码分析 3.1 Semaphore介绍 sync&#xff0c;ReentrantLock是互斥锁&#xff0c;保证一个资源同一时间只允许被一个线程访问 Semaphore&#xff08;信号量&#xff09;保证1个或多个资源可以被指定数量的线程同时访问 底层实现是基于AQS去做的。 Semap…

开源进程/任务管理服务Meproc使用之HTTP API

本文讲述如何使用开源进程/任务管理服务Meproc的HTTP API管理整个服务。 Meproc所提供的全部 API 的 URL 都是相同的。 http://ip:port/proc例如 http://127.0.0.1:8606/proc在下面的小节中&#xff0c;我们使用curl命令向您展示 API 的方法、参数和请求正文。 启动任务 …

git 常规操作及设置

git 常规操作及设置 Git是一个分布式版本控制系统&#xff0c;可以用来跟踪文件的修改历史并与其他人进行协作开发。下面是一些常见的Git操作及设置&#xff1a; 初始化仓库&#xff1a;使用命令git init在当前目录创建一个新的Git仓库。 克隆仓库&#xff1a;使用命令git clo…

TCP/IP协议及配置、IP地址、子网掩码、网关地址、DNS与DHCP介绍

一、什么是服务器 能够为其他计算机提供服务的更高级的电脑 尺寸:Unit 1u1.75英寸44.45mm4.445cm IDC&#xff08;机房&#xff09; C/S结构 Client/Server客户端和服务端 二、TCP/IP协议 计算机与计算机之间通信的协议 三要素&#xff1a; IP地址 子网掩码 IP路由 I…

基于一次应用卡死问题所做的前端性能评估与优化尝试

问题背景 在上个月&#xff0c;由于客户反馈客户端卡死现象但我们远程却难以复现此现象&#xff0c;于是我们组织了一次现场上门故障排查&#xff0c;并希望基于此次观察与优化&#xff0c;为客户端开发提供一些整体的优化升级。当然&#xff0c;在尝试过程中&#xff0c;也发…