Java Arrays 方法详解

news2025/1/17 14:44:46

目录

1.Java Arrays.fill()方法详解

 2.Java Arrays.copyOf()方法详解

3.Java Arrays.copyOfRange()方法详解

4.Java Arrays.sort()方法详解

1.sort(T[] a)

2.sort(T[] a,int formIndex,int toIndex)

3.sort(T[] a,Comparator c)

(1)按第一维元素比较二维数组:

(2)按第二维元素比较二维数组:

4.sort(T[] a,int formIndex,int toIndex,Comparator c)


1.Java Arrays.fill()方法详解

在Java API中的public static void fill(Object[ ] a,int fromIndex,int toIndex,Object val)将指定的Object引用分配给指定Object数组指定范围中的每个元素,填充的范围从索引fromIndex(包括)一直到索引toIndex(不包括),如果fromIndex==toIndex,则填充范围为空。

参数说明
a要填充的数组
fromIndex要使用指定值填充的第一个元素的索引(包括)
toIndex要使用指定值填充的最后一个元素的索引(不包括)
val要存储在数组的所有元素中的值

具体方法如下:

方法描述
fill(boolean[ ] a,boolean val)将指定的布尔值分配给指定的布尔数组的每个元素
fill(boolean[ ] a,int fromIndex,int toIndex,boolean val)将指定的布尔值分配给指定布尔数组的指定范围的每个元素
fill(byte[ ] a,byte val)将指定的字节值分配给指定字节数组的每个元素
fill(byte[ ] a,int fromIndex,int toIndex,byte val)将指定的字节值分配给指定字节数组的指定范围的每个元素
fill(char[ ] a,char val)将指定的char值分配给指定的char数组的每个元素
fill(char[ ] a,int fromIndex,int toIndex,char val)将指定的char值分配给指定char数组的指定范围的每个元素
fill(double[ ] a,double val)将指定的double值分配给指定的double数组的每个元素
fill(double[ ] a,int fromIndex,int toIndex,double val)将指定的double值分配给指定的double数组的指定范围内的每个元素
fill(float[ ] a,float val)将指定的浮点值分配给指定浮点数组的每个元素
fill(float[ ] a,int fromIndex,int toIndex,float val)将指定的浮点值分配给指定浮点数组的指定范围的每个元素
fill(int[ ] a,int val)将指定的int值分配给指定的int数组的每个元素
fill(int[ ] a,int fromIndex,int toIndex,int val)将指定的int值分配给指定int数组的指定范围的每个元素
fill(long[ ] a,long val)将指定的long值分配给指定的long数组的每个元素
fill(long[ ] a,int fromIndex,int toIndex,long val)将指定的long值分配给指定long数组的指定范围的每个元素
fill(short[ ] a,short val)将指定的short值分配给指定的short数组的每个元素
fill(short[ ] a,int fromIndex,int toIndex,short val)将指定的short值分配给指定的short数组的指定范围的每个元素

例如:

import java.util.Arrays;
public class Main {
    public static void main(String[] args) {
        int[] a = new int[6];
        int[] b = new int[6];
        Arrays.fill(a,2);
        Arrays.fill(b,2,4,6);
        for(int i=0;i<a.length;i++)
        System.out.print(a[i]+",");
        System.out.print("\n");
        for(int i=0;i<b.length;i++)
        System.out.print(b[i]+",");
        System.out.print("\n");
    }
}

运行结果如下:

2,2,2,2,2,2,
0,0,6,6,0,0,

 2.Java Arrays.copyOf()方法详解

该方法传回的数组是新的数组对象,改变传回数组中的元素值,不会影响原来的数组,其中第一个变量表示原来的数组对象,第二个变量表示新的数组的长度,如果新的数组的长度超过原来的数组的长度,保留数组元素的默认基本类型的值。

方法描述
copyOf(boolean[] original,int newLength)复制指定的数组,截断或填充false(如有必要),使副本具有指定的长度
copyOf(byte[] original,int newLength)复制指定的数组,截断或填充0(如有必要),使副本具有指定的长度
copyOf(char[] original,int newLength)复制指定的数组,截断或填充空字符(如有必要),使副本具有指定的长度
copyOf(double[] original,int newLength)复制指定的数组,截断或填充0(如有必要),使副本具有指定的长度
copy0f(float[] original,int newLength)复制指定的数组,截断或填充0(如有必要),使副本具有指定的长度
copyOf(int[] original,int newLength)复制指定的数组,截断或填充0(如有必要),使副本具有指定的长度
copyOf(long[] original,int newLength)复制指定的数组,截断或填充0(如有必要),使副本具有指定的长度
copyOf(short[] original,int newLength)复制指定的数组,截断或填充0(如有必要),使副本具有指定的长度
copyOf(T[] original,int newLength)复制指定的数组,截断或填充空值(如有必要),使副本具有指定的长度
copy0f(U[] original,int newLength,Class<? extends T[]> newType)复制指定的数组,截断或填充空值(如有必要),使副本具有指定的长度

例如:

import java.util.Arrays;
public class Main {
    public static void main(String[] args) {
        int[] arr1 = {1,2,3,4,5};
        int[] arr2 = Arrays.copyOf(arr1,4);
        int[] arr3 = Arrays.copyOf(arr1,8);
        for(int i=0;i<arr2.length;i++)
            System.out.print(arr2[i]+" ");
        System.out.println();
        for(int i=0;i<arr3.length;i++)
            System.out.print(arr3[i]+" ");
    }
}

运行结果如下:

1 2 3 4
1 2 3 4 5 0 0 0

3.Java Arrays.copyOfRange()方法详解

该方法用于对一个已有的数组进行截取复制,复制出一个左闭右开区间的数组。将一个原始的数组original,从下标from开始复制,复制到上标to,生成一个新的数组返回。

注意:这里包括from,不包括to,即[from,to)。

方法描述
copyOfRange(boolean[] original,int from,int to)将指定数组的指定范围复制到新数组中
copyOfRange(byte[] original,int from,int to)将指定数组的指定范围复制到新数组中
copyOfRange(char[] original,int from,int to)将指定数组的指定范围复制到新数组中
copyOfRange (double[] original,int from,int to)将指定数组的指定范围复制到新数组中
copyOfRange(float[] original,int from,int to)将指定数组的指定范围复制到新数组中
copyOfRange(int[] original,int from,int to)将指定数组的指定范围复制到新数组中
copyOfRange(long[] original,int from,int to)将指定数组的指定范围复制到新数组中
copyOfRange(short[] original,int from,int to)将指定数组的指定范围复制到新数组中
copyOfRange(T[] original,int from,int to)将指定数组的指定范围复制到新数组中
copyOfRange(U[] original,int from,int to,Class<? extends T[]> newType)将指定数组的指定范围复制到新数组中

例如:

import java.util.Arrays;
public class Main {
    public static void main(String[] args) {
       int[] arr = {1,2,3,4,5,6,7,8};
       System.out.println(Arrays.toString(arr));
       //复制整个数组
       int[] allArr = Arrays.copyOfRange(arr,0,8);
       String allString = Arrays.toString(allArr);
       //复制部分数组
       int[] partArr = Arrays.copyOfRange(arr,2,6);
       String partString = Arrays.toString(partArr);
       System.out.println(allString);
       System.out.println(partString);
    }
}

运行结果如下:

[1, 2, 3, 4, 5, 6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8]
[3, 4, 5, 6]

4.Java Arrays.sort()方法详解

该方法是Arrays类的静态方法,用于对数组进行排序,时间复杂度O(n*logn),方法返回值为void。排序后,数组中存放的是排序后的结果。由于该方法是在原来数组的空间基础上进行升序排序,因此不需要定义一个数组接收它,即不需要返回值。

Arrays.sort()重载了四类方法:

1.sort(T[] a)

对指定T型数组按数字升序排序,例如:

import java.util.Arrays;
import java.util.Comparator;
public class Main {
    public static void main(String[] args) {
        int[] a = {2,5,1,8,12};
        Arrays.sort(a);
        System.out.println(Arrays.toString(a));
    }
}

运行结果如下:

[1, 2, 5, 8, 12]

2.sort(T[] a,int formIndex,int toIndex)

对指定T型数组的指定范围按数字升序排序,例如:

import java.util.Arrays;
import java.util.Comparator;
public class Main {
    public static void main(String[] args) {
        int[] a = {8,2,15,4,7,1};
        Arrays.sort(a,1,5);
        System.out.println(Arrays.toString(a));
    }
}

运行结果如下:

[8, 2, 4, 7, 15, 1]

3.sort(T[] a,Comparator<? supre T> c)

根据指定比较器产生的顺序对T型数组进行排序。

(1)按第一维元素比较二维数组:
import java.util.Arrays;
import java.util.Comparator;
public class Main {
    public static void main(String[] args) {
        int[][] nums = new int[][]{{1,3},{5,7},{9,5},{7,3}};
        Arrays.sort(nums,new Comparator<int[]>() {
            public int compare(int[] a,int[] b) {
                if(a[0]==b[0]) {
                    return a[1]-b[1];
                }else{
                    return a[0]-b[0];
                }
            }
        });
        for(int[] num : nums)
            System.out.println(Arrays.toString(num));
        int[] a = {8,2,15,4,7,1};
        Arrays.sort(a,1,5);
        System.out.println(Arrays.toString(a));
    }
}

运行结果如下:

[1, 3]
[5, 7]
[7, 3]
[9, 5]
[8, 2, 4, 7, 15, 1]
(2)按第二维元素比较二维数组:
import java.util.Arrays;
import java.util.Comparator;
public class Main {
    public static void main(String[] args) {
        int[][] nums = new int[][]{{1,3},{5,7},{9,5},{7,3}};
        Arrays.sort(nums,new Comparator<int[]>() {
            public int compare(int[] a,int[] b) {
                if(a[1]==b[1]) {
                    return a[0]-b[0];
                }else{
                    return a[1]-b[1];
                }
            }
        });
        for(int[] num : nums)
            System.out.println(Arrays.toString(num));
    }
}

运行结果如下:

[1, 3]
[7, 3]
[9, 5]
[5, 7]

4.sort(T[] a,int formIndex,int toIndex,Comparator<? supre T> c)

根据指定比较器产生的顺序对T型数组的指定范围进行排序,例如:

import java.util.Arrays;
import java.util.Comparator;
public class Main {
    public static void main(String[] args) {
        int[][] nums=new int[][]{{9,5},{7,3},{5,7},{1,3}};
        Arrays.sort(nums,1,4,new Comparator<int[]>() {
            public int compare(int[] a,int[] b) {
                if(a[0]==b[0]){
                    return a[1]-b[1];
                } else {
                    return a[0]-b[0];
                }
            }
        });
        for(int[] num : nums)
            System.out.println(Arrays.toString(num));
    }
}

运行结果如下:

[9, 5]
[1, 3]
[5, 7]
[7, 3]

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

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

相关文章

欧拉Euler 21.10 安装Oracle 19c RAC( PDB )到单机ADG

环境说明 主库&#xff08;RAC&#xff09; 备库&#xff08;FS&#xff09; 数据库版本 Oracle19.22.0.0 Oracle19.22.0.0 IP 地址 192.168.40.90-94 192.168.40.95 主机名 hfdb90、hfdb91 hfdb95 DB_UNIQUE_NAME hfdb dghfdb DB_NAME hfdb hfdb DB Instance…

图数据库 | 18、高可用分布式设计(中)

上文我们聊了在设计高性能、高可用图数据库的时候&#xff0c;从单实例、单节点出发&#xff0c;一般有3种架构演进选项&#xff1a;主备高可用&#xff0c;今天我们具体讲讲分布式共识&#xff0c;以及大规模水平分布式。 主备高可用、分布式共识、大规模水平分布式&#xff…

为mysql开启error日志 - phpstudy的数据库启动失败

步骤 找到mysql的配置文件 “my.ini”&#xff0c; windows上直接进入mysql安装目录&#xff0c;或者直接全盘搜&#xff1b; linux上使用命令 locate my.ini 即可搜索 修改"my.ini"&#xff0c;找到 组[mysqld] 下面的“log_error”并设置日志文件绝对路径&#x…

Java设计模式——单例模式(特性、各种实现、懒汉式、饿汉式、内部类实现、枚举方式、双重校验+锁)

我是一个计算机专业研0的学生卡蒙Camel&#x1f42b;&#x1f42b;&#x1f42b;&#xff08;刚保研&#xff09; 记录每天学习过程&#xff08;主要学习Java、python、人工智能&#xff09;&#xff0c;总结知识点&#xff08;内容来自&#xff1a;自我总结网上借鉴&#xff0…

MySQL查询相关内容

创建员工库和表&#xff1b; mysql> create database mydb8_worker; Query OK, 1 row affected (0.01 sec)mysql> use mydb8_worker; Database changed mysql> create table t_worker(-> department_id int(11) not null comment 部门号,-> worker_id int(11)…

微信小程序原生与 H5 交互方式

在微信小程序中&#xff0c;原生与 H5 页面&#xff08;即 WebView 页面&#xff09;之间的交互通常有以下几种方式&#xff1a; 1. 使用 postMessage 进行通信 微信小程序的 WebView 页面和原生小程序页面可以通过 postMessage 来进行数据传递。 WebView 页面向原生小程序发…

shell脚本基础练习

1、需求&#xff1a;判断192.168.1.0/24网络中&#xff0c;当前在线的ip有哪些&#xff0c;并编写脚本打印出来。&#xff08;以前10个网络IP为例&#xff0c;可以进行更改&#xff09; #!/bin/bashfor ((i1;i<10;i)) doping -c1 -w1 192.168.1.$i &> /dev/null &…

【全栈开发】----Mysql基本配置与使用

本篇是在已下载Mysql的情况下进行的&#xff0c;若还未下载或未创建Mysql服务&#xff0c;请转到这篇: 2024 年 MySQL 8.0.40 安装配置、Workbench汉化教程最简易&#xff08;保姆级&#xff09;_mysql8.0.40下载安装教程-CSDN博客 本文对于mysql的操作均使用控制台sql原生代码…

Shell的运行原理以及Linux中的权限问题

Shell的运行原理 Linux严格意义上说的是一个操作系统&#xff0c;我们称之为“核心&#xff08;kernel&#xff09;“ &#xff0c;但我们一般用户&#xff0c;不能直接使用kernel。 而是通过kernel的“外壳”程序&#xff0c;也就是所谓的shell&#xff0c;来与kernel沟通。如…

【0x0084】HCI_Set_Min_Encryption_Key_Size命令详解

目录 一、命令概述 二、命令格式及参数 2.1 HCI_Set_Min_Encryption_Key_Size命令格式 2.2. Min_Encryption_Key_Size 三、生成事件及参数 3.1. HCI_Command_Complete 事件 3.2. Status 四、命令的执行流程 4.1. 主机端准备阶段 4.2. 命令发送阶段 4.3. 控制器接收和…

【MATLAB代码】CV和CA模型组成的IMM(滤波方式为UKF),可复制粘贴源代码

该代码实现了一维无迹卡尔曼滤波器(UKF)与交互式多模型(IMM)结合的状态估计。代码分为多个部分,主要功能包括参数定义、观测数据生成、状态估计、模型更新以及结果可视化。 文章目录 运行结果程序代码主要功能代码结构应用场景注意事项运行结果 程序代码 下方源代码直接粘…

机器视觉4-损失函数与梯度计算

机器视觉4-损失函数与梯度计算 损失函数定义公式及变量含义整体理解 多类支撑向量机损失正则项与超参数什么是超参数一、与模型参数的区别二、常见的超参数三、调参方法 什么是优化一、参数优化的重要性二、利用损失函数进行反馈三、调整分类器参数的方法 优化的目标一、最小化…

极客说|Azure AI Agent Service 结合 AutoGen/Semantic Kernel 构建多智能体解决⽅案

作者&#xff1a;卢建晖 - 微软高级云技术布道师 「极客说」 是一档专注 AI 时代开发者分享的专栏&#xff0c;我们邀请来自微软以及技术社区专家&#xff0c;带来最前沿的技术干货与实践经验。在这里&#xff0c;您将看到深度教程、最佳实践和创新解决方案。关注「极客说」&am…

sparkRDD教程之基本命令

作者&#xff1a;nchu可乐百香果 指导者&#xff1a;nchu-YoungDragon 1.前期准备 &#xff08;1&#xff09;从迅雷网盘上面下载这个项目&#xff0c;并且把scala&#xff0c;maven和java环境配置好 网盘链接&#xff1a; 分享文件&#xff1a;SparkRDD.zip 链接&#xf…

基于 Electron 应用的安全测试基础 — 提取和分析 .asar 文件

视频教程在我主页简介或专栏里 目录&#xff1a; 提取和分析 .asar 文件 4.1. .asar 文件提取工具 4.1.1. 为什么选择 NPX&#xff1f; 4.2. 提取过程 4.3. 提取 .asar 文件的重要性 4.3.1 关键词 4.3.2 执行关键词搜索 4.3.2.1 使用命令行工具“grep”进行关键词搜索 4.3.2…

C# 获取PDF文档中的字体信息(字体名、大小、颜色、样式等

在设计和出版行业中&#xff0c;字体的选择和使用对最终作品的质量有着重要影响。然而&#xff0c;有时我们可能会遇到包含未知字体的PDF文件&#xff0c;这使得我们无法准确地复制或修改文档。获取PDF中的字体信息可以解决这个问题&#xff0c;让我们能够更好地处理这些文件。…

Django框架:python web开发

1.环境搭建&#xff1a; &#xff08;a&#xff09;开发环境&#xff1a;pycharm &#xff08;b&#xff09;虚拟环境&#xff08;可有可无&#xff0c;优点&#xff1a;使用虚拟环境可以把使用的包自动生成一个文件&#xff0c;其他人需要使用时可以直接选择导入包&#xff…

2024最新版JavaScript逆向爬虫教程-------基础篇之Chrome开发者工具学习

目录 一、打开Chrome DevTools的三种方式二、Elements元素面板三、Console控制台面板四、Sources面板五、Network面板六、Application面板七、逆向调试技巧 7.1 善用搜索7.2 查看请求调用堆栈7.3 XHR 请求断点7.4 Console 插桩7.5 堆内存函数调用7.6 复制Console面板输出 工…

联通用户管理系统(一)

#联通用户管理系统&#xff08;一&#xff09; 1.新建项目 如果你是windows的话&#xff0c;界面应该是如下的&#xff1a; 2.创建app python manage.py startapp app01一般情况下&#xff1a;我们是在pycharm的终端中运行上述指令&#xff0c;但是pychrm中为我们提供了工具…

【网络编程】基础知识

目录 网络发展史 局域网和广域网 局域网&#xff08;LAN&#xff09; 广域网&#xff08;Wan&#xff09; 光猫 路由器 网线 设备通信的要素 IP地址 基本概念 地址划分 特殊地址&#xff08;后续编程使用&#xff09; IP地址转换 字节序 网络模型 网络的体系结…