一、简介

全类名: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类的更多相关文章

  1. Java常用API(Arrays类)

    Java常用API(Arrays类) 什么是Arrays类? java.util.Arrays 此类包含用来操作数组的各种方法,比如排序和搜索等.其所有方法均为静态方法,调用起来 非常简单. 这里我们 ...

  2. Java常用API(ArrayList类)

    Java常用API(ArrayList类) 我们为什么要使用ArrayList类? 为了更加方便的储存对象,因为使用普通的数组来存储对象太过麻烦了,因为数组的一个很大的弱点就是长度从一开始就固定了,所 ...

  3. Java常用API(Scanner类)

    Java常用API( Scanner类)1 1.Scanner类 首先给大家介绍一下什么是JavaAPI API(Application Programming Interface),应用程序编程接口 ...

  4. Java常用API(Math类)

    Java常用API(Math类) Math类的作用 java.lang.Math 类包含用于执行基本数学运算的方法,如初等指数.对数.平方根和三角函数.类似这样的工具 类,其所有方法均为静态方法,并且 ...

  5. Java常用API(String类)

    Java常用API(String类) 概述: java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如 "abc" )都可以被看作是实现此类的实例 1. ...

  6. Java常用API(Random类)

    Java常用API(Random类) Random:是一个用于生成随机数的类 构造方法 public Random() :创建一个新的随机数生成器. 返回随机数的方法 public int nextI ...

  7. Java—包装类/System类/Math类/Arrays类/大数据运算/Collection接口/Iterator迭代器

    基本类型包装类 8种基本类型对应的包装类如: 将字符串转成基本类型: 将基本数值转成字符串有3种方式: 基本类型直接与””相连接即可:34+" " 调用String的valueOf ...

  8. Java基础学习笔记之:System类;Math类;Arrays类BigInteger,BigDecimal

    System类 在API中System类介绍的比较简单,我们给出定义,System中代表程序所在系统,提供了对应的一些系统属性信息,和系统操作.System类不能手动创建对象,因为构造方法被priva ...

  9. java常用的工具类

    包装类 https://www.cnblogs.com/benjieqiang/p/11305777.html Arrays类(数组工具类) package day02.com.offcn.test; ...

  10. Java数组05——Arrays类

    Arrays类讲解  package array; ​ import java.util.Arrays; ​ public class ArrayDemon07 {     public static ...

随机推荐

  1. Commons Collections1分析

    0x01.基础知识铺垫 接下来这个过程将涉及到几个接口和类 1.LazyMap 我们通过下⾯这⾏代码对innerMap进⾏修饰,传出的outerMap即是修饰后的Map: Map outerMap = ...

  2. WPF 之 依赖属性与附加属性(五)

    一.CLR 属性 ​ 程序的本质是"数据+算法",或者说用算法来处理数据以期得到输出结果.在程序中,数据表现为各种各样的变量,算法则表现为各种各样的函数(操作符是函数的简记法). ...

  3. c++ stl nth_element 原理解析

    nth_element是stl中的一个库函数,它会使迭代器nth所指的元素与整个[first,last)完整排序后.同一个位置的元素同值.即找到完整排序时第n位的正确值. 但这个函数与完整排序的区别在 ...

  4. HDU2732 Leapin' Lizards 最大流

    题目 题意: t组输入,然后地图有n行m列,且n,m<=20.有一个最大跳跃距离d.后面输入一个n行的地图,每一个位置有一个值,代表这个位置的柱子可以经过多少个猴子.之后再输入一个地图'L'代表 ...

  5. 数理统计8:点估计的有效性、一致最小方差无偏估计(UMVUE)、零无偏估计法

    在之前的学习中,主要基于充分统计量给出点估计,并且注重于点估计的无偏性与相合性.然而,仅有这两个性质是不足的,无偏性只能保证统计量的均值与待估参数一致,却无法控制统计量可能偏离待估参数的程度:相合性只 ...

  6. 国产网络损伤仪SandStorm -- 主界面简介

    国产网络损伤仪SandStorm可以模拟出带宽限制.时延.时延抖动.丢包.乱序.重复报文.误码.拥塞等网络状况,在实验室条件下准确可靠地测试出网络应用在真实网络环境中的性能,以帮助应用程序在上线部署前 ...

  7. 6.Header交换机之模拟验证用户身份

    标题 : 6.Header交换机之模拟验证用户身份 目录 : RabbitMQ 序号 : 6 var channel = connection.CreateModel(); ​ //设置服务质量 ch ...

  8. python 调用麦克风;摄像头;截屏;

    # -*- coding: utf-8 -*- """ Created on Mon Jun 24 14:47:35 2019 @author: erio "& ...

  9. Java中集合的有序问题

    Java中的容器主要包括两方面: Collection:List.Set.queue Map:HashMap.treeMap: 一. Collection 1. Set TreeSet:基于红黑树实现 ...

  10. how to remove duplicates of an array by using js reduce function

    how to remove duplicates of an array by using js reduce function ??? arr = ["a", ["b& ...