当前位置: 首页 > 编程日记 > 正文

Java学习笔记七——数组工具类Arrays

数组工具类Arrays

Java提供的Arrays类里包含的一些static修饰的方法可以直接操作数组。若将里面的方法用熟的话,那开发效率会大大提高。下面介绍其中的方法。

List<T> asList(T... a)

作用:将指定数组或数组元素,转换成固定大小的List。

用法:

        String[] strArr = { "aaa", "bbb", "vvv" };//用法1:参数是数组引用List<String> list = Arrays.asList(strArr);for (String str : list) {System.out.println(str);}//用法2:参数是不限个数的数组元素List<String> list2 = Arrays.asList("aaa", "bbb", "vvv");for (String str : list2) {System.out.println(str);}

注意:参数列表虽然是不定参数,但只有上面两种用法:要么是一个数组引用,要么是数据类型一致的多个参数。

int binarySearch(type[] a,type key)

作用:使用二分法查询元素key在数组a中出现的索引。

type:char,byte,short,int,float,double,String和自定义对象。

限制:1.若type是基本数据类型或String,则数组a的元素必须是按照升序排列好的;

2.若type是自定义对象,则该对象必须实现Comparable接口(只有一个compareTo方法,用于规定对象比较大小规则),且数组a的元素必须是按照升序排列好的。

例子:

        int[] intArr = {12,34,45,56,67,78,89};int indexInt = Arrays.binarySearch(intArr, 67);System.out.println(indexInt); //4
        String[] strArr = { "aaa", "bbb","ccc", "vvv" };int indexStr = Arrays.binarySearch(strArr, "ccc");System.out.println(indexStr); //2

下面看一个type是自定义对象的例子:

//自定义对象 ,必须实现Comparable接口
public class Model implements Comparable<Model> {public int age;//规定两个对象之间比较大小的规则,按照参数顺序,//若返回1,则当前对象>m;//若返回0,则当前对象==m;//若返回-1,则当前对象<m;//
    @Overridepublic int compareTo(Model m) {if(age >m.age){return 1;}if(age == m.age){return 0;}//剩下的就是小于return -1;}
}
public class Test {public static void main(String[] args) {//定义3个Model对象Model m1 = new Model();m1.age = 20;Model m2 = new Model();m2.age = 45;Model m3 = new Model();m3.age = 32;//定义数组,按照从小到大顺序,即升序Model[] mArr = {m1,m3,m2};int indexM = Arrays.binarySearch(mArr, m3);System.out.println(indexM);  //1
    }
}

int binarySearch(type[] a,int fromIndex,int toIndex,typekey)

作用:与上个方法类似,只是搜索数组a中fromIndex索引到toIndex索引之间的元素。

type:char,byte,short,int,float,double,String和自定义对象。

限制:同上。

例子:略

type[] copyOf(type[] original,int newLength)

作用:复制数组original的newLength个元素,组成新的数组,并返回这个新数组。

type:type:基本类型,String类型和自定义对象。

说明:若newLength小于original数组的长度,则返回original数组的前newLength个元素;若newLength大于original数组的长度,则则不足的补充0(数值类型)、false(布尔类型)、null(引用类型)。

例子:

public class Test {public static void main(String[] args) {int[] original = {1,2,3,4,5};//小于original数组长度int[] newArr = Arrays.copyOf(original, 3);for (int i : newArr) {System.out.println(i);  //1,2,3
        }//大于original数组长度int[] newArr2 = Arrays.copyOf(original, 8);for (int i : newArr2) {System.out.println(i);  //1,2,3,4,5,0,0,0
        }}
}

type[] copyOfRangetype[] original,int from,int to)

作用:复制original中索引从from到to之间的元素(包括from,不包括to),组成新数组并返回该新数组。

type:基本类型,String类型和自定义对象。

例子:

import java.util.Arrays;public class Test {public static void main(String[] args) {int[] original = { 1, 2, 3, 4, 5 };int[] newArr = Arrays.copyOfRange(original, 0, 2);for (int i : newArr) {System.out.println(i); // 1,2
        }}
}

boolean equals(type[] a1, type[] a2)

作用,比较两个数组,若a1和a2的长度相等,并且a1的每个元素都与a2与之对应索引的元素都相等,则返回true;否则返回false

type:基本类型,String类型和自定义类型(实现Comparable接口)

例子:

import java.util.Arrays;public class Test {public static void main(String[] args) {String[] a1 = { "aaa","bbb","ccc"};String[] a2 = { "aaa","bbb","ccc"};String[] a3 = { "aaa","www","ccc"};boolean a1a2 = Arrays.equals(a1, a2);System.out.println(a1a2);  //trueboolean a1a3 = Arrays.equals(a1, a3);System.out.println(a1a3);  //false
    }
}

void fill(type[] a,type val)

作用:将数组a的元素全部赋值为val,若原来有值,则覆盖。相当于用val填充数组a。

type:基本类型,String类型和自定义类型

例子:

import java.util.Arrays;public class Test {public static void main(String[] args) {String[] a = new String[5];Arrays.fill(a, "aaa");for (String str : a) {System.out.println(str);  //打印5次 "aaa"
        }}
}

void fill( type[] a,int fromIndex,int toIndex,type val)

作用:用val填充数组a中索引从fromIndex到索引toIndex的元素,包括fromIndex,不包括toIndex

type:基本类型,String类型和自定义类型

例子:

import java.util.Arrays;public class Test {public static void main(String[] args) {String[] a = { "111", "222", "333", "444444", "5555555555" };Arrays.fill(a, 2, 4, "mmm");for (String str : a) {System.out.println(str); // 打印"111", "222","mmm","mmm","5555555555"
        }}
}

未完待续。。。

转载于:https://www.cnblogs.com/gq2blog/p/6115430.html

相关文章:

c++窗口管理系统是什么_优秀的食堂管理系统让你对校园生活更充满希望

面对今年疫情环境下的种种困难&#xff0c;各大高校纷纷根据情况采取不同的措施&#xff0c;应对开学的各种难题。解决返校学生就餐就是一大难点。学校后勤工作人员少之又少&#xff0c;开设的食堂窗口也供不应求。这也直接导致了后勤人员懒散&#xff0c;食堂阿姨给菜“手抖”…

ACM训练小结-2018年6月16日

今天题目情况如下&#xff1a;A题&#xff1a;线段树XOR性质。情况&#xff1a;由于写法问题&#xff0c;调试困难&#xff0c;浪费大量时间。B题&#xff1a;&#xff08;对所有满足i mod pq&#xff0c;求a[i]之和&#xff09;&#xff0c;无修改&#xff0c;直接上n*sqrt(n)…

加密货币的本质

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 去年&#xff0c;比特币暴涨&#xff0c;其他币也像雨后春笋一样冒出来&#xff0c;已经有1000多种了。 很多人都在问&#xff0c;加密货币&#…

「2018山东一轮集训」 Tree

为什么出题人这么毒瘤啊&#xff1f;&#xff1f;&#xff01;&#xff01;一个分块还要带log的题非要出成n<2*1e5。。。。。。。 为了卡过最后两个点我做了无数常数优化&#xff0c;包括但不限于&#xff1a;把所有线段树改成 存差分的树状数组&#xff1b;把树剖求LCA的极…

mysql 表空间收缩_mysql表碎片清理和表空间收缩

mysql表碎片清理和表空间收缩(即清理碎片后report_site_day.ibd文件磁盘空间减小,该方案基于独立表空间存储方式)OPTIMIZETABLE [tablename],当然这种方式只适用于独立表空间清除碎片的优点:降低访问表时的IO,提高mysql性能,释放表空间降低磁盘空间使用率OPTIMIZE TABLE ipvacl…

spring security remember me实现自动登录

1 默认策略 在我们自定义的login中增加一个选择框 <input type"submit" value"Login" /> <br/> <br/> <input type"checkbox" valuetrue name"_spring_security_remember_me" />记住密码 <!-- 记住…

野指针与内存泄漏那些事

野指针&#xff1a;不是NULL指针&#xff0c;是指向垃圾内存的指针 野指针成因&#xff1a; 1.指针变量没有被初始化&#xff1a;指针变量在创建时同时应当被初始化&#xff0c;要么将指针设置为NULL&#xff0c;要么让它指向合法的内存。 2.指针p被free或者delete,没有被设置为…

参数等效模型可以用于_等效媒质理论(介电参数反演)

听说过超材料的读者大概率会了解一个知识点&#xff0c;复杂的媒质块可以等效为一块平板&#xff0c;当然这是有条件的。比如模型小于十分之一波长之类的&#xff0c;尤其对模型厚度要求严格些。大家在查找等效媒质理论文献的时候&#xff0c;可能会被繁杂的理论解释弄得爆炸&a…

js日期格式化Date

使用Date类进行日期格式化。 1 输入“yyyy-MM-dd hh:mm:ss”格式的String字符串&#xff0c;返回字符串 做一个简单判定&#xff0c;在当日显示为几点几分&#xff0c;同年为月日&#xff0c;不同年显示年月 1 function dateFormat(str){2 //str格式为yyyy-mm-dd h…

(十九)异常处理

什么是异常处理 异常就是程序运行时发生错误的信号&#xff08;在程序出现错误时&#xff0c;则会产生一个异常&#xff0c;若程序没有处理它&#xff0c;则会抛出该异常&#xff0c;程序的运行也随之终止&#xff09;&#xff0c;在python中,错误触发的异常如下 语法错误&…

jquery 获取一组元素的选中项 - 函数、jquery获取复选框值、jquery获取单选按钮值...

做表单提交时&#xff0c;如果现在还在用form提交&#xff0c;用户体验很差&#xff0c;所以一般使用ajax提交。 其中需要获取每个表单输入元素的值&#xff0c;获取的时候像文本框这些还好说&#xff0c;Jquery提供了 .val() 方法&#xff0c;获取很方便&#xff0c;但是获取复…

geany怎么创建文件夹_教程详情|Geany怎么使用,Geany安装使用教程_234游戏网

Geany是利用GTK 2工具包开发的一个快速、轻巧的集成开发环境&#xff0c;具有良好的可移植性和通用性、安全性&#xff0c;广泛应用于各个行业。Geany具有语法高亮、代码折叠、代码自动完成等功能&#xff0c;非常适合开发人员使用。下面是关于Geany安装使用教程&#xff0c;希…

Django模板系统和admin模块

只需要记两种特殊符号&#xff1a;{{ }}和 {% %}变量相关的用 {{}}&#xff0c; 逻辑相关的用 {%%}。 Filters 语法&#xff1a; {{ value|filter_name:参数 }}default{{ value|default: "nothing"}} 如果value值没传的话就显示nothinglength{{ value|length }}|左右…

finalshell文件列表不显示_Jira面板配置_待办事项不显示问题列表

最近&#xff0c;使用jira进行项目管理&#xff0c;出现一些问题&#xff0c;对于其中一些配置&#xff0c;做下记录&#xff0c;后续方便查看&#xff0c;也给需要的人一个参考&#xff0c;传送门&#xff1a;jira使用文档_Java_pang787559613的博客-CSDN博客​blog.csdn.netj…

背单词:3年,34150分钟!

转载于:https://www.cnblogs.com/sx00xs/p/6128618.html

如何学习区块链技术

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 有效地学习区块链技术&#xff0c;您需要深入了解区块链协议和一些编程语言。记住区块链是一种可以用各种编程语言实现的协议。看下面的例子&#…

.net里鼠标选中的text数据怎么获取_Python数据科学实践 | 爬虫1

点击上方蓝色字体&#xff0c;关注我们大家好&#xff0c;基于Python的数据科学实践课程又到来了&#xff0c;大家尽情学习吧。本期内容主要由智亿同学与政委联合推出。前面几章大家学习了如何利用Python处理与清洗数据&#xff0c;如何探索性数据分析&#xff0c;以及如何利用…

redis实现对账(集合比较)功能

现状&#xff1a;每日在进行系统之间的订单对账时&#xff0c;往往是这样的操作流程&#xff1b; 1.从外部系统拉取数据存入本地数据库&#xff1b; 2.查询本地订单数据集合localSet&#xff1b; 3.查询外部系统订单数据集合outerSet; 4.以本地localSet为基准&#xff0c;对照o…

Javascript刷题 》 查找数组元素位置

找出元素 item 在给定数组 arr 中的位置 输出描述: function indexOf(arr, item) {..... } 如果数组中存在 item&#xff0c;则返回元素在数组中的位置&#xff0c;否则返回 -1 输入例子: indexOf([ 1, 2, 3, 4 ], 3) 输出例子: 2 实现方法 1、先将arr转换成字符串&#xff0c;…

Go 语言函数

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 函数是基本的代码块&#xff0c;用于执行一个任务。 Go 语言最少有个 main() 函数。 你可以通过函数来划分不同功能&#xff0c;逻辑上每个函数执…

终端主题_再见 XShell 和 ITerm 2,是时候拥抱全平台高颜值终端工具 Hyper 了!

点击上方“涛哥聊Python”&#xff0c;选择“星标”公众号重磅干货&#xff0c;第一时间送达转自&#xff1a;运维之美不论是 macOS 还是 Windows 下&#xff0c;我们都不推荐使用系统自带终端。无论是可拓展性还是可编程性都被「系统自带」这样的特点限制。特别是 Windows 下的…

每天一个linux命令(8):cp 命令

cp命令用来复制文件或者目录&#xff0c;是Linux系统中最常用的命令之一。一般情况下&#xff0c;shell会设置一个别名&#xff0c;在命令行下复制文件时&#xff0c;如果目标文件已经存在&#xff0c;就会询问是否覆盖&#xff0c;不管你是否使用-i参数。但是如果是在shell脚本…

samba srver on centos-7

切换到root用户安装samba&#xff0c;将windows登录用户admin映射到linux用户centos 安装samba并准备工作目录 yum install -y samba samba-client mkdir -p /var/samba/code chown -R centos:centos /var/samba/codetouch /etc/samba/smbusersecho "centos admin "…

以太坊数据结构MPT

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 MPT(Merkle Patricia Tries)是以太坊存储数据的核心数据结构&#xff0c;它是由Merkle Tree和Patricia Tree结合的一种树形结构&#xff0c;理解MP…

lambda在python中的用法_在python中对lambda使用.assign()方法

我在Python中运行以下代码&#xff1a;#Declaring these now for later use in the plotsTOP_CAP_TITLE Top 10 market capitalizationTOP_CAP_YLABEL % of total cap# Selecting the first 10 rows and setting the indexcap10 cap.loc[:10, :].set_index(id)# Calculating…

react 开发过程中的总结/归纳

1、点击元素&#xff0c;获取绑定该事件的父级元素&#xff0c;使用 e.currentTarget。e.target 获取的是&#xff0c;出发该事件的元素&#xff0c;该元素有可能是所绑定事件的元素的子元素。 2、使用 react router4 history 只能传递给儿子组件&#xff0c;不能传递给孙子组件…

kvm虚拟机--存储池配置梳理(转)

1.创建基于文件夹的存储池&#xff08;目录&#xff09; 2.定义存储池与其目录 1 # virsh pool-define-as vmdisk --type dir --target /data/vmfs 3.创建已定义的存储池 (1)创建已定义的存储池 1 # virsh pool-build vmdisk (2)查看已定义的存储池&#xff0c;存储池不激活无法…

区块链概况:什么是区块链

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 区块链技术自身仍然在飞速发展中&#xff0c;目前还缺乏统一的规范和标准。 wikipedia 给出的定义为&#xff1a; A blockchain —originally, b…

drx功能开启后_简单实用!小米手机中这些新功能真香

小米手机作为国产机热销品牌之一&#xff0c;它除了有好看的外观&#xff0c;还有很多隐藏的实用功能&#xff0c;今天小编就来和大家分享5个小米手机里你不知道的功能。Al电话助理看到陌生号码时&#xff0c;很多人第一反应就是挂掉&#xff0c;不想接听&#xff0c;但又担心自…

Ubuntu 8.04嵌入式交叉编译环境arm-linux-gcc搭建过程图解

Linux版本&#xff1a;Ubuntu8.04 内核版本&#xff1a;Linux 2.6.24 交叉编译器版本&#xff1a;arm-linux-gcc-3.4.1 交叉编译器下载链接&#xff1a; https://share.weiyun.com/5oxlS6X &#xff08;密码&#xff1a;36R7&#xff09; 前言 1、搭建交叉编译环境 安装、配置交…