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 ...
随机推荐
- hash应用
关于HASH 这应该是经常使用的一个算法,因为其预处理后,优秀的\(O(1)\)处理出子串,并且\(O(1)\)比较,大快人心,而且写法简单,令人心情愉悦; 但是其空间复杂度较高,并且有玄学模 ...
- XML、DTD约束
XML的作用: xml现在主要用于配置文件 文档声明: 如果你使用记事本打开文档,此时如果记事本默认保存数据到硬盘根据的是"GB2312"编码,这个时候如果你在xml文档源码中en ...
- Redis全面解析
1.什么是Redis? Redis是BSD协议,是一个高性能的key-value非关系型数据库. 2.redis单线程问题 所谓的单线程指的是网络请求模块使用了一个线程(所以不需考虑并发安全性),即一 ...
- 升级到WLS2
WLS2相对WSL1有重大改变,其中最重要的是subsystem linux可以说是真正意义上的linux发行版了,当然也提升了i/o性能. 1. 升级windows WSL 2 is only av ...
- SpringBoot整合Swagger初探
当下的Web项目大都采用前后端分离+分布式微服务的架构.前后端分离式的开发中,前端开发人员要与后端开发人员协商通信接口,约定接口规范.因此对于开发人员来说能够维持一份及时更新且完整全面的API文档会大 ...
- Chapter Zero 0.2.2 内存
目录 内存 内存的多通道设计 DRAM 和 SRAM 只读存储器(ROM) RAM.ROM以及硬盘的区别(转自百度) 内存 CPU的数据都是来自主存储器(main memory),个人计算机的主寄存器 ...
- chrome禁用缓存:调试javascript注意事项
chrome禁用缓存:调试javascript chrome对js和图片的缓存,导致调试的程序不是最新的,有时F5刷新了都没用. 可以禁用缓存: 先按F12,再按F1, 勾选 Disable ca ...
- POJ1273 最大流模板
之前自己写的,以后当一个模板的基础吧,不管是最大流,最小割,二分图匹配 下面是POJ1273的一个裸题.. 1 #include <iostream> 2 #include <cst ...
- 康托展开:对全排列的HASH和还原,判断搜索中的某个排列是否出现过
题目:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=2297 前置技能:(千万注意是 ...
- HDU 4049 Tourism Planning(状压DP)题解
题意:m个城市,n个人,让这n个人按固定顺序走遍m个城市.每个城市有一个单人票价pi.每个人在每个城市能获得vij的价值.如果多个人在同一城市,那么会额外获得价值,给出一张n * n价值表,额外价值为 ...