1. 简介

Arrays类包含用于操作数组的各种方法(例如排序和搜索)。此类还包含一个静态工厂,允许将数组视为列表。

如果指定的数组引用为null,则此类中的方法都抛出NullPointerException,除非另有说明。

2. 方法说明

List<T>  asList(T... a):返回由指定数组构成的大小固定的列表,该列表不能使用add和remove方法改变长度

int binarySearch(Object[] a, Object key):使用二分查找元素的索引

T[] copyOfRange(T[] original, int from, int to):复制数组,并且指定开始/结束索引

T[] copyOf(T[] original, int newLength):复制数组,并且指定复制长度

void fill(Object[] a, Object val):使用指定元素填充数组

void fill(Object[] a, int fromIndex, int toIndex, Object val):使用指定数组填充数组,并且指定填充的开始/结束索引

void sort(Object[] a):对数组排序,需要实现数组元素的Comparable接口

void sort(Object[] a, int fromIndex, int toIndex):对指定开始/结束索引的数组排序,需要实现数组元素的Comparable接口

void sort(T[] a, Comparator<? super T> c):对数组排序,需要实现数组元素的Comparator接口

void sort(T[] a, int fromIndex, int toIndex, Comparator<? super T> c):对指定开始/结束索引的数组排序,需要实现数组元素的Comparator接口

String toString(Object[] a):数组转字符串

static Stream<T> stream(T[] array):数组转为流

static IntStream stream(int[] array):int数组转为流,还有DoubleStream和LongStream

3. 简单示例

 /*
*二分查找仅适用于有序的数组
* */ import java.util.*;
import java.util.stream.Stream; public class ArraysFunc {
public static void main(String[] args){ String[] arr1 = new String[]{"a","b","b","d","c"}; //数组转成长度固定的列表,不能使用add和remove方法改变list长度
List<String> list1 = Arrays.asList(arr1);
System.out.println(list1); // [a, b, b, d, c] //使用二分查找元素索引
int index = Arrays.binarySearch(arr1,"b");
System.out.println(index); // 2 // 复制指定开始/结束位置的数组(不包含结尾)
String[] arr2 = Arrays.copyOfRange(arr1, 1,3);
System.out.println(Arrays.asList(arr2)); // [b, b] //复制指定长度的数组(索引从0开始)
String[] arr3 = Arrays.copyOf(arr1,3);
System.out.println(Arrays.asList(arr3)); // [a, b, b] // 判断数组是否等价
boolean flag1 = Arrays.equals(arr1,arr2);
System.out.println(flag1); // false // 对数组填充指定元素,可指定范围(不包含结尾)
Arrays.fill(arr3,"e");
System.out.println(Arrays.asList(arr3)); // [e, e, e]
Arrays.fill(arr3,0,2,"f");
System.out.println(Arrays.asList(arr3)); // [f, f, e] // 对数组排序
Arrays.sort(arr1);
System.out.println(Arrays.asList(arr1)); // [a, b, b, c, d] // 将数组变成字符串,保留完整符号
String str1 = Arrays.toString(arr1);
System.out.println(str1); // [a, b, b, c, d] // stream,可以用于数组类型转换
String str = "1 3 2 5 6 4";
String[] strArray = str.split(" ");
Stream<String> stringStream = Arrays.stream(strArray);
int[] intArray = Arrays.stream(strArray).mapToInt(Integer::parseInt).toArray();
int[] intArr = Stream.of(strArray).mapToInt(Integer::parseInt).toArray();
}
}

4. 说明

4.1 使用Arrays.binarySearch()方法时,需要注意数组要是有序的,否则将会无法得到自己想要的结果。

这是由于该方法使用二分查找法实现。

4.2 使用Arrays.sort()方法时,对于自定义元素需要实现Comparable或者Comparator接口。

关于两接口的实现参考如下:https://www.cnblogs.com/jfl-xx/p/10656433.html

!!!

java Arrays常用方法的更多相关文章

  1. Java学习笔记之——String和Arrays常用方法

    一.String常用方法 1.subString(int beginIndex,int endIndex) 截取字符串 从beginIndex开始截取,截取endIndex-beginIndex的长度 ...

  2. Java Arrays Tutorial (3)

    Java Arrays Tutorial (3) Data types have a specific set of values. A byte cannot hold a value larger ...

  3. json:JSONObject包的具体使用(JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包)

    1.JSONObject介绍 JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包. 2.下载jar包 http:// ...

  4. Java Arrays.sort源代码解析

    前提: 当用到scala的sortWith,发现: def sortWith(lt: (A, A) ⇒ Boolean): List[A] // A为列表元素类型 根据指定比较函数lt进行排序,且排序 ...

  5. java Map常用方法封装

      java Map常用方法封装 CreationTime--2018年7月16日15点59分 Author:Marydon 1.准备工作 import java.util.HashMap; impo ...

  6. java Arrays.asList用法

    java Arrays.asList用法 用途 Arrays是java容器相关操作的工具类,asList方法将Array转换为list,是Array和List之间的桥梁. 注意 Arrays.asLi ...

  7. Java Arrays.sort相关用法与重载

    Java Arrays.sort() Java中的数组排序函数, 头文件 import java.util.Arrays; 相关API Arrays.sort(arys[]) Arrays.sort( ...

  8. java Arrays数组

    1.java.util.Arrays 工具类的使用Arrays 类中的常用方法1) toString()打印数组2) equals()比较两个数组是否相同3) copyOf(…)复制指定的数组 (效率 ...

  9. Top 10 Methods for Java Arrays

    作者:X Wang 出处:http://www.programcreek.com/2013/09/top-10-methods-for-java-arrays/ 转载文章,转载请注明作者和出处 The ...

随机推荐

  1. nmon安装与使用

    一.检查安装环境 1,# uname –a (查看操作系统信息,所检查服务器为64位操作系统) Linux jmeter 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 ...

  2. Git 教程(四):标签和其他

    标签管理 发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本.将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来.所以,标签也是版本库 ...

  3. python 七段管模块

    python 七段管模块 def drawGap(): #绘制数码管间隔 turtle.penup() turtle.fd(5) def drawLine(draw): #绘制单段数码管 drawGa ...

  4. 2018-2019-2 20165305《网络攻防技术》Exp5 MSF基础应用

    1. 实践内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.1一个主动攻击实践,如ms08_067; (1分) 1.2 一个针对浏览器的攻击, ...

  5. drf 单表

    ^_^ # [{title,price},{}] 构造的数据结构 简单的FBV/CBV def showbooks(request): # FBV if request.method =='GET': ...

  6. C++环境设置

    g++ -V #include <iostream> int main() { std::cout << "Hello World!\n"; return ...

  7. [十二省联考2019]骗分过样例 luoguP5285 loj#3050

    不解释(因为蒟蒻太弱了,肝了一晚受不了了...现在省选退役,这有可能就是我做的最后一题了... #include<bits/stdc++.h> using namespace std; # ...

  8. 【模板】ST表

    给定一个长度为 \(N\) 的数列,和 \(M\) 次询问,求出每一次询问的区间\([l,r]\)内数字的最大值. 说明 对于30%的数据,满足: \(1 \leq N, M \leq 10 , 1≤ ...

  9. Windows Server Backup(2016) 备份

    1. 使用 Windows Server Backup 备份 如果服务器没有启用 Windows Server Backup,需要打开服务器管理器,如下图 点击添加角色和功能,根据向导,添加 Wind ...

  10. loj 6008 餐巾计划 - 费用流

    题目传送门 传送门 题目大意 (经典题还不知道题意?) 容易想到需要把未使用的餐巾和已经使用的餐巾分开. 设$X_i$表示第$i$天已经的使用餐巾的点,设$Y_i$表示第$i$天还未使用的餐巾的点 我 ...