Java常用类:Arrays类
一、简介
全类名:java.util.Arrays
描述:
- 此类包含用来操作数组(比如排序和搜索)的各种方法。
- 此类还包含一个允许将数组作为列表来查看的静态工厂。
注意:
- 除非特别注明,否则如果指定数组引用为'null',则此类中的方法都会抛出'NullPointerException'。
- Arrays类中的方法都是'static'修饰的静态方法,在使用的时候可以直接使用类名进行调用,而'不用'使用对象来调用(注意:是'不用'而不是'不能')。
二、常用方法
Ⅰ、打印数组
方法:
- toString(Object[] a):将数组对象的内容转换转换成字符串。
- deepToString(Object[] a):可以将多维数组对象的内容转换转换成字符串。
示例:
public static void main(String[] args) {
int[][] arrayObject = {{1, 2}, {2, 3}, {3, 4}, {4, 5}, {5, 6}};
System.out.println(Arrays.toString(arrayObject));//[[I@5674cd4d, [I@63961c42, [I@65b54208, [I@1be6f5c3, [I@6b884d57]
System.out.println(Arrays.deepToString(arrayObject));//[[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]]
}
Ⅱ、数组元素排序
方法:
- sort(Object[] a):将数组对象的元素按升序排序,排序规则依据该种元素的类在实现Comparable接口的compareTo方法时的实现逻辑。
- sort(T[] a, Comparator<? super T> c):将数组对象的元素按照自定义的排序规则进行排序,排序规则通过传入一个自定义的Comparator接口的实现类对象参数来指定。
示例:
public static void main(String[] args) {
int[] intArr = {1, 5, 3, 2, 4};
Arrays.sort(intArr);
System.out.println(Arrays.toString(intArr));//[1, 2, 3, 4, 5]
int[][] arrayObject = {{1, 2}, {1}, {1, 2, 3, 4}, {1, 2, 3}, {3, 4}};
/*
根据内层数组的长度对二维数组的内层数组进行排序。
匿名内部类可以用Lambda表达式简化为:(o1, o2) -> Integer.compare(o1.length, o2.length)
或者替换为:Comparator.comparingInt(o -> o.length)
*/
Arrays.sort(arrayObject, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return Integer.compare(o1.length, o2.length);
}
});
System.out.println(Arrays.deepToString(arrayObject));//[[1], [1, 2], [3, 4], [1, 2, 3], [1, 2, 3, 4]]
}
Ⅲ、二分法查找元素
方法:
- binarySearch(Object[] a, Object key):用二分查找算法在给定数组中搜索给定值的对象,若存在则返回其下标,若不存在则返回负数。
注意:
- 必须在调用binarySearch方法之前先对数组进行排序(通过sort方法等),如果没有对数组进行排序,则结果是不确定的。
- 如果数组包含多个带有指定值的元素,则无法保证找到的是哪一个。
示例:
public static void main(String[] args) {
int[] intArr = {1, 5, 3, 2, 4};
/* 必须在调用binarySearch方法之前先对数组进行排序 */
Arrays.sort(intArr);
System.out.println(Arrays.binarySearch(intArr, 3));//2
}
Ⅳ、填充元素
方法:
fill(Object[] a, Object val):将数组的所有元素用指定的值进行替换。
fill(Object[] a, int fromIndex, int toIndex, Object val):将数组的指定起始下标到指定截止下标前的所有元素用指定的值进行替换。起始下标的元素会被替换,截止下标的元素不会被替换。
示例:
public static void main(String[] args) {
int[] intArr = {1, 5, 3, 2, 4};
Arrays.fill(intArr, 1, 3, 6);
System.out.println(Arrays.toString(intArr));//[1, 6, 6, 2, 4]
Arrays.fill(intArr, 7);
System.out.println(Arrays.toString(intArr));//[7, 7, 7, 7, 7]
}
Ⅴ、数组转换List
方法:
- asList(T... a):将一组同类型的参数转换为List(ArrayList)集合。
示例:
public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
/* List集合转数组 */
Integer[] array = list.toArray(new Integer[0]);
System.out.println(Arrays.toString(array));//[1, 2, 3, 4, 5]
}
Java常用类:Arrays类的更多相关文章
- Java常用API(Arrays类)
Java常用API(Arrays类) 什么是Arrays类? java.util.Arrays 此类包含用来操作数组的各种方法,比如排序和搜索等.其所有方法均为静态方法,调用起来 非常简单. 这里我们 ...
- Java常用API(ArrayList类)
Java常用API(ArrayList类) 我们为什么要使用ArrayList类? 为了更加方便的储存对象,因为使用普通的数组来存储对象太过麻烦了,因为数组的一个很大的弱点就是长度从一开始就固定了,所 ...
- Java常用API(Scanner类)
Java常用API( Scanner类)1 1.Scanner类 首先给大家介绍一下什么是JavaAPI API(Application Programming Interface),应用程序编程接口 ...
- Java常用API(Math类)
Java常用API(Math类) Math类的作用 java.lang.Math 类包含用于执行基本数学运算的方法,如初等指数.对数.平方根和三角函数.类似这样的工具 类,其所有方法均为静态方法,并且 ...
- Java常用API(String类)
Java常用API(String类) 概述: java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如 "abc" )都可以被看作是实现此类的实例 1. ...
- Java常用API(Random类)
Java常用API(Random类) Random:是一个用于生成随机数的类 构造方法 public Random() :创建一个新的随机数生成器. 返回随机数的方法 public int nextI ...
- Java—包装类/System类/Math类/Arrays类/大数据运算/Collection接口/Iterator迭代器
基本类型包装类 8种基本类型对应的包装类如: 将字符串转成基本类型: 将基本数值转成字符串有3种方式: 基本类型直接与””相连接即可:34+" " 调用String的valueOf ...
- Java基础学习笔记之:System类;Math类;Arrays类BigInteger,BigDecimal
System类 在API中System类介绍的比较简单,我们给出定义,System中代表程序所在系统,提供了对应的一些系统属性信息,和系统操作.System类不能手动创建对象,因为构造方法被priva ...
- java常用的工具类
包装类 https://www.cnblogs.com/benjieqiang/p/11305777.html Arrays类(数组工具类) package day02.com.offcn.test; ...
- Java数组05——Arrays类
Arrays类讲解 package array; import java.util.Arrays; public class ArrayDemon07 { public static ...
随机推荐
- B - B Silver Cow Party (最短路+转置)
有n个农场,编号1~N,农场里奶牛将去X号农场.这N个农场之间有M条单向路(注意),通过第i条路将需要花费Ti单位时间.选择最短时间的最优路径来回一趟,花费在去的路上和返回农场的这些最优路径的最长时间 ...
- 关于KMP算法的理解
上次因为haipz组织的比赛中有道题必须用到KMP算法,因此赛后便了解了下它,在仔细拜读了孤~影神牛的文章之后有种茅塞顿开的感觉,再次ORZ. 附上链接http://www.cnblogs.com/y ...
- P3381 [模板] 最小费用最大流
EK + dijkstra (2246ms) 开氧气(586ms) dijkstra的势 可以处理负权 https://www.luogu.org/blog/28007/solution-p3381 ...
- Who Gets the Most Candies?
Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 11303 Accepted: 3520 Case Time Limit ...
- Smith Numbers POJ - 1142 暴力递归枚举
题意: 给你一个数x,把这个分解成素数之积(假设是x1*x2*x3),如果 x的每一数位的和 等于 x1每一数位的和加上x2每一数位的和加上x3每一数位的和,那么他就是题目要找的数 示例: ...
- 牛客练习赛70 B.拼凑 (序列自动机)
题意:有一个模板串,有\(T\)个字符串,从字符串中找到某个子串,使得这个子串中的子序列包含模板串,求最短的子串的长度. 题解:找子序列,很容易想到序列自动机,根据序列自动机的原理,我们一定可以确保除 ...
- Ansible 自动化部署
参考 BLOG: Ansible 系列模块 Ansible 部署与使用 Ansible Book Ansible Ansible 是一个自动化统一配置管理工具,自动化主要体现在 Ansible 集成了 ...
- 忘记Mysql的root用户密码处理方法(以mysql 5.5.33为例)
1.修改mysql服务器的脚本 ~]#vi /etc/rc.d/init.d/mysqld #找到$bindir/mysqld_safe --datadir="$datadir" ...
- Hexo准备---Node.js、Vue
Hexo准备---Node.js.Vue 安装node.js 1.下载node 配置node.js环境官网下载,一直next就好,非常方便. 下载官网: http://nodejs.cn/downlo ...
- 可迭代对象&迭代器&生成器
在python中,可迭代对象&迭代器&生成器的关系如下图: 即:生成器是一种特殊的迭代器,迭代器是一种特殊的可迭代对象. 可迭代对象 如上图,这里x是一个列表(可迭代对象),其实正如第 ...