Arrays类的学习

一种基于OpenPose和DNN的跌倒检测软件系统(中文&英文) 学习并实现一种跌倒检测模型,此模型基于OpenPose实现逐帧人体姿态检测,使用DNN识别人体动作。检测方式有在线与离线两种,本文主要测试了离线模式,测试效果较好。 阅读详情
在论坛和生活中总是碰到不停的找 JAVA 排序和查找算法的人,问哪里有源代码,呵呵。其实 JAVA 本身给大家提供了一个很好的类,那就是 Arrays 。 Arrays 隶属书 The Collections Framework 。这个类提供了数组的填充,查找,比较,排序等一系列的对数组的操作。


一
填充:

Arrays.fill(type[] a, type val)系列方法是给,数组填充。就是简单的把一个数组全部或者某段数据填成一个特殊的值。

?

二 查找:

binarySearch(type[] a, type key)系列方法是,在某类型的数组中用2分法查找特定的Key的元素,返回元素号。前提是这个数组是经过排序的,如果有多个元素和Key值相等的情况下,无法预料,返回的是哪一个。对于返回值,有以下规律,返回值 < 0表示没有找到,返回值 >= 0说明找到了。

对于插入,Arrays没有特殊算法,一般对数组的插入都是转化为Collection之后再做的,但是binarySearch还是能帮你找到数组的插入点的,插入点位置为返回值的绝对值减1(|返回值| - 1)。

对排序过的数组查找,算法用2分法已经相当快了,呵呵。

?

三 比较:

equals(type[] a, type[] b) 系列方法是做两个数组的比较的,相等返回true。这个方法运用的时候,有些地方要注意。
比较两个float数组的时候,对每个元素比较,程序不是用的==来判断的,而是用new Float(f1).equals(new Float(f2)),这个方法认为
NaN等于它本身,0.0f不等于-0.0f。对于double数组也是一样的。

对于Object[]数组呢,是用的(e1==null ? e2==null : e1.equals(e2))。

?

四 排序:

sort(type[] a)系列方法是对数组排序的。Sun用的排序算法是调整快速排序法,采用的是Jon L. Bentley and M. Douglas McIlroy's "Engineering a Sort Function", Software-Practice and Experience, Vol. 23(11) P. 1249-1265 (November 1993)。这个算法排序要n* O(n)时间的大量数据,只需要O(n1ogn)时间。

关于快速排序法参考:(http://algorithm.myrice.com/algorithm/commonalg/sort/internal_sorting/quick_sort/quick_sort.htm
快速排序 Quick Sort

我们已经知道,在决策树计算模型下,任何一个基于比较来确定两个元素相对位置的排序算法需要Ω(nlogn)计算时间。如果我们能设计一个需要O(n1ogn)时间的排序算法,则在渐近的意义上,这个排序算法就是最优的。许多排序算法都是追求这个目标。快速排序算法它在平均情况下需要O(nlogn)时间。这个算法是由C.A.R.Hoare发明的。)

?

五 数组的转换:

用Arrays.asList(Object[] a)能够实现数组到ArrayList的转换。同时利用Collection.toArray()能将一些集合类型的数据方便的变成数组。

?

六 杂谈:

查看源代码的发现:针对double类型的比较时,在相等的情况下,Sun的源代码种都作了进一步的比较。

例子1:

??? if (a[i]==0 && Double.doubleToLongBits(a[i])==NEG_ZERO_BITS) {

例子2:
????? if (midVal < key) {

??????????????? cmp = -1;?? // Neither val is NaN , thisVal is smaller

??????????? } else if (midVal > key) {

??????????????? cmp = 1;??? // Neither val is NaN , thisVal is larger

??????????? } else {

??????????????? long midBits = Double.doubleToLongBits(midVal);

??????????????? long keyBits = Double.doubleToLongBits(key);

??????????????? cmp = (midBits == keyBits ?? 0 : // Values are equal

?????????????????????? (midBits < keyBits ? -1 : // (-0.0, 0.0) or (!NaN, NaN )

??????????????????????? 1));???????????????????? // (0.0, -0.0) or (NaN, ! NaN )

??????????? }

看来在double类型的比较上,如果用==比从精度上考虑,还是有问题的。

另外对于对象数组的查找和排序的时候比普通类型数组多一个方法:
public static int binarySearch(Object[] a, Object key, Comparator c)

public static void sort(Object[] a, Comparator c)

这个地方Comparator是你自己为对象比较定义的算法,在运行的时候,将对象的比较代理给Comparator的public int compare(Object?o1, Object?o2)不过Comparator是一个接口,具体实现就是你自己的算法了。

?

[参考文献]

JavaTM 2 Platform, Standard Edition, v 1.3.1 API Specification

JDK源代码

http://algorithm.myrice.com/algorithm/commonalg/sort/internal_sorting/quick_sort/quick_sort.htm

Multisim 14.0实战:从零搭建可调幅多波形信号发生器(附仿真文件) 本文详细介绍了如何在Multisim 14.0中从零搭建一个可调幅多波形信号发生器,涵盖方波、三角波和正弦波的生成原理与实现步骤。通过核心电路架构解析、关键参数设计及Multisim实战操作,帮助电子工程学习者和硬件工程师掌握信号发生器的设计与调试技巧,并提供仿真文件供实践验证。 阅读详情

相关推荐

〖进阶篇1〗YAML参数解析:从nav2_params.yaml看机器人导航调优

本文深入解析了ROS2 Nav2导航系统中关键的nav2_params.yaml文件,提供了从定位、行为树、运动控制到环境感知等核心模块的参数调优实战指南。文章通过具体场景案例,如狭窄走廊、动态仓库和高精度对接,详细阐述了如何调整AMCL粒子数、控制器权重、代价地图膨胀半径等参数,以解决机器人导航中的犹豫、碰撞和精度问题,帮助开发者实现从“能用”到“好用”的进阶。

m9n0o的博客 417

Arrays.asList详解和示例

注意 (1)该方法适用于对象型数据的数组(String、Integer…) (2)该方法不建议使用于基本数据类型的数组(byte,short,int,long,float,double,boolean) (3)该方法将数组与List列表链接起来:当更新其一个时,另一个自动更新 (4)不支持add()、remove()、clear()等方法 (5)此方法得到的List长度是不可变的 (6)asLis...

Venus's Blog 6万+

智能变电站协议系列-1、GOOSE、SV、MMS协议简介及GOOSE示例运行问题(IEC61850)

目前有一个新的研究,关于电网使用的GOOSE、SV、MMS协议,并使用相关库来做一下测试。由于goose、sv、mms等都属于IEC61850,因此,需要对IEC61850相关内容有一些了解,都是国际标准,属于电气自动化的一部分,对于自动化或者电气相关领域有接触的专业应该或多或少有一些了解。IEC61850目标是用于变电站自动化、分布式能源、水力和天然气发电厂、风力发电厂、电动汽车作为分布式能源等领域,目前似乎在变电站自动化方面的推广和使用更加广泛。

逍遥游的博客 2万+

java数组类Arrays:比较,填充,排序

int i1[] = {1,2,3,4,5,6}; int i2[] = {6,5,4,3,2,1}; //排序 Arrays.sort(i2); System.out.println(i1.equals( i2 )); System.out.println( Arrays.equals(i1, i2) ); //将数组2的内容填充3 Arrays.fill(i2...

weixin_34365635的博客 142

利用Matlab绘制非线性系统相图:从理论到实践

本文详细介绍了如何利用Matlab进行非线性系统的相图绘制与相平面分析。从理论基础的状态空间转换出发,通过无阻尼线性谐振子和范德波尔振荡器等实例,手把手演示了使用ode45求解器绘制相图、分析平衡点与极限环的完整流程,并分享了方向场绘制、参数分岔探索及常见错误解决方案等高级技巧,为动力学系统分析与控制设计提供了直观强大的可视化工具。

yhn456789的博客 905

别再只调IoU了!给YOLOv8换上NWDLoss,实测小目标检测精度提升明显

本文深入探讨了YOLOv8在小目标检测中的优化策略,重点介绍了NWDLoss(Normalized Wasserstein Distance Loss)的应用优势。通过对比实验证明,NWDLoss能有效解决传统IoU损失函数的局限性,显著提升小目标检测精度,在遥感影像和交通监控等场景中表现尤为突出。文章提供了详细的代码实现和训练技巧,帮助开发者快速集成这一先进技术。

weixin_29072299的博客 265

Arrays.asList使用

将一个数组转化为一个List对象,一般会想到Arrays.asList()方法,这个方法会返回一个ArrayList类型的对象。但这个ArrayList类并非java.util.ArrayList类,而是Arrays类的静态内部类,继承了java.util.AbstractList这个类,存储数组元素的a变量是final类型的,由此判断,这个静态内部类是不能做任何内部元素的添加、更新、删除操作,否则就会报UnsupportedOperationException异常。

任何技能都是从模仿开始,逐步升华。 2229

【STK】手把手教你利用STK进行弹道导弹和运载火箭发射仿真的相关方法全过程解析

写这个系列主要是这几年做了一些弹道导弹和运载火箭发射的相关仿真项目,stk软件由于其专业性在国内比较小众,相关的教程和书籍、经验贴都不是很多,因此新手在进行开发中容易遇到较多困难,把自己的一些经验体会写下来,一方面供自己总结回顾,另一方面也希望对大家有所帮助。这个系列计划分几篇文章写完,每章的内容结构相似,都分为①如何确定发射场位置和发射轨迹、②导入导弹和运载火箭模型、③设计模型分段动作、④飞行参数分析和相关应用这四个部分,每篇文章争取完整描述1-2个实际项目的操作过程。

weixin_44184852的博客 5985

Arrays工具类

1、 数组工具类Arrays 1.1 Arrays.toString(数组) 把数组里的数据,用逗号连接成一个字符串。【值1,值2】 1.2 Arrays.sort(数组) 对数组排序,对于基本类型的数组使用优化后的快速排序算法,效率高。 对引用类型数组,使用优化后的合并排序算法。 1.3 Arrays.copyOf(原数组,新的长度) 把数组复制成一个指定长度的...

weixin_44598691的博客 371

Coze工作流的代码无法安装第三方模块(依赖)怎么办?(如何解决Coze工作流代码缺少模块(依赖)的问题)

Coze工作流的代码无法安装第三方模块(依赖)怎么办?(如何解决Coze工作流代码缺少模块(依赖)的问题)

XiaoqiangClub的博客 4364

人形机器人大语言模型 pi*0.6(π*0.6):最新从经验中学习的VLA

摘要:本文介绍了一种名为Recap的机器人学习方法,通过示范训练、纠错指导和强化学习三个步骤提升机器人执行复杂任务的能力。研究显示,仅依靠模仿学习的机器人难以解决错误累积问题,而Recap方法通过价值函数可视化和优势条件策略训练,使π*0.6模型在咖啡制作、纸箱组装和衣物折叠等任务中的成功率提升超过90%,吞吐量翻倍。该方法突破了传统依赖人工演示的局限,通过自主经验学习实现机器人性能的持续优化,为未来机器人基础模型的发展提供了新方向。

2506_90492529的博客 1317

Arrays类学习

一.Arrays类 是JDK提供的专门用于操作数组的工具类,位于java.util包中。 import java.util.Arrays; 二.Arrays类常用方法 1.元素的升序与降序/void sort (array) 2.数组的赋值/void fill(array,val) 3.查询元素在数组的下标/int binarySearch(array,val) 4.比较两个数组是否相等/boolean equals(array1,array2) 5.打印数组元素/Arrays.toString(array

enghuawushuang的博客 116

构建AI Agent驱动的智能健康管理系统

数据碎片化:健康数据分散在不同的设备和平台中,难以统一管理和分析。个性化不足:健康管理方案通常是通用的,难以根据个人的健康状况实时调整。用户参与度低:用户难以获得及时、个性化的健康建议,导致健康管理效果不佳。AI Agent是一个能够感知环境、采取行动以实现目标的智能实体。根据智能体的智能水平,可以分为简单反应式智能体和复杂适应式智能体。实时监测健康数据。获取个性化的健康建议。收到健康风险预警。

AI天才研究院 749

【Java学习笔记】Arrays类

【Java学习笔记】Arrays类

在csdn分享更多技术知识,相互交流 1042

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

java学习笔记:Arrays类

java学习笔记:Arrays类 Arrays类 ---- 1.Arrays类提供了对数组操作的各种方法 2.常用方法 public static String toString(int[] arr);//把数组转换成字符串 public static void sort(int[] arr);//对数组进行升序排序 3.Arrays的构造方法是私有的。 私有构造方法是为了不让...

黄道婆的专栏 173

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

20175212童皓桢 在IDEA中以TDD的方式对String类和Arrays类进行学习

20175212童皓桢 在IDEA中以TDD的方式对String类和Arrays类进行学习 要求 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 charAt split Arrays类 sort binarySearch 具体内容 1.String类 (1)charAt 该方法返回位于字符串的指定索引处的...

weixin_30340745的博客 142

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Java中Arrays类学习

6、Arrays.copeOf() 和Arrays.copeOfRange();//二分查找法找指定元素的索引值(下标)Arrays类位于 java.util 包中,主要包含了操作数组的各种方法。//将数组中的内容全部打印出来。//比较数组元素是否相等。

杀神lwz的博客 341

Java 学习笔记 Arrays类

学习自 https://www.cnblogs.com/wei-jing/p/10540192.html https://www.cnblogs.com/codingcc1/p/11066591.html https://blog.youkuaiyun.com/u012045061/article/details/50349795 Arrays类是一个数组操作类,位于 java.util 包中 String[] nums = {"1","-9","34","asd"}; //将数字以字符串的形式标识

qq_43589143的博客 245

Arrays类

学习时间 2020-12-17 学习内容 Arrays类的概述 Arrays类是针对数组进行操作的工具类。 提供了排序,查找等功能。 Arrays类的成员方法 public static String toString(int[] a) 返回指定数组内容的字符串表示形式。 public static void sort(int[] a) 对指定的 int 型数组按数字升序进行排序。 public static void sort(float[] a, int fromInd

加油学JAVA的博客 339

java中Arrays类的学习

起因 项目中,遇到如下问题: data为MiniOrderModel实体类, List orderModelList = pager.getData(); orderModelList.add(data); 执行报错:java.lang.unsupportedOperationException at java.util.AbstractList.add Arrays.asList() Arrays官网 public static <T> List<T> asList(T... a)

xunboang0059的博客 380

Java 数组Arrays类学习

Java 数组Arrays类学习 Arrays类主要学习了fill,equals,to string,sort四种常用简单方法 package com.LittleWu.Array; import java.util.Arrays; /*** * ░░░░░░░░░░░░░░░░░░░░░░░░▄░░ * ░░░░░░░░░▐█░░░░░░░░░░░▄▀▒▌░ * ░░░░░░░░▐▀▒█░░░░░░░░▄▀▒▒▒▐ * ░░░░░░░▐▄▀▒▒▀▀▀▀▄▄▄▀▒▒▒▒▒▐ * ░░░░░▄▄

qq_51555533的博客 164

在IDEA中以TDD的方式对String类和Arrays类进行学习

在IDEA中以TDD的方式对String类和Arrays类进行学习 目的 -老师主要想让我们知道如何检查自己的代码有无bug。让我们掌握如何测试自己的代码。TDD一种很重要的方式 题目 测试相关方法的正常,错误和边界情况 String类 charAt split Arrays类 sort binarySearch 提交运行结果截图和码云代码链接,截图没有水印的需要单独找老师验收才有成绩 ...

weixin_30485291的博客 176

Java 学习28:Arrays 类

Arrays 类是一个专门用于操作数组的工具类,位于 java.util.Arrays 包中。它提供了许多静态方法(static 修饰的方法)来方便地处理数组,如填充、排序、比较、查找等。以下介绍 Arrays 类的常用方法。

lcu111的博客 460

Java学习打卡06(冒泡排序,Arrays类中toString() , sort()方法的使用)

我们学习Arrays类时,首先得知道一下,它有哪些方法,按住ctrl+鼠标点击类名,就可以跳转到该类的源码中,查看该类的源码;然后在该类中点击idea最左边的structure,就可看到该类中的所偶有方法。

2301_80044465的博客 261

Java基础学习之Arrays类

【代码】Java基础学习之Arrays类。

Palpitate233的博客 594

Arrays类、Calendar类和System类的学习

一、Array类Arrays:针对数组操作的工具类  (提供了一些针对数组排序和二分搜索法) public static String toString(int[] a):可以将int类型的数组转换成字符串 ([元素1,元素2,元素3...])        public static void sort(int[] a)对指定的 int 型数组按数字升序进行排序 public static in...

cangerwjd的博客 152
下一篇: XML简记
KillAllError
博客等级 码龄25年 1粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值