java Arrays常用方法
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常用方法的更多相关文章
- Java学习笔记之——String和Arrays常用方法
一.String常用方法 1.subString(int beginIndex,int endIndex) 截取字符串 从beginIndex开始截取,截取endIndex-beginIndex的长度 ...
- Java Arrays Tutorial (3)
Java Arrays Tutorial (3) Data types have a specific set of values. A byte cannot hold a value larger ...
- 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:// ...
- Java Arrays.sort源代码解析
前提: 当用到scala的sortWith,发现: def sortWith(lt: (A, A) ⇒ Boolean): List[A] // A为列表元素类型 根据指定比较函数lt进行排序,且排序 ...
- java Map常用方法封装
java Map常用方法封装 CreationTime--2018年7月16日15点59分 Author:Marydon 1.准备工作 import java.util.HashMap; impo ...
- java Arrays.asList用法
java Arrays.asList用法 用途 Arrays是java容器相关操作的工具类,asList方法将Array转换为list,是Array和List之间的桥梁. 注意 Arrays.asLi ...
- Java Arrays.sort相关用法与重载
Java Arrays.sort() Java中的数组排序函数, 头文件 import java.util.Arrays; 相关API Arrays.sort(arys[]) Arrays.sort( ...
- java Arrays数组
1.java.util.Arrays 工具类的使用Arrays 类中的常用方法1) toString()打印数组2) equals()比较两个数组是否相同3) copyOf(…)复制指定的数组 (效率 ...
- Top 10 Methods for Java Arrays
作者:X Wang 出处:http://www.programcreek.com/2013/09/top-10-methods-for-java-arrays/ 转载文章,转载请注明作者和出处 The ...
随机推荐
- pyCharm最新2018激活码
本教程对jetbrains全系列可用例:IDEA.WebStorm.phpstorm.clion等 因公司的需求,需要做一个爬取最近上映的电影.列车号.航班号.机场.车站等信息,所以需要我做一个爬虫项 ...
- 向日葵连CentOS
TeamViewer可以连CentOS,但TeamViewer最近老是提示“检测为商业用途”,5分钟就会自动断,用起来非常不爽,所以决定改用向日葵试下,向日葵目前的口碑也不错,更何况是国产软件,更要支 ...
- VUE引入字体图标库
1. 下载阿里图标 2. 解压文件,并复制文件到VUE项目内 3. 找到添加的字体图标的.css文件,将.iconfont改成[class^="iconfont"], [class ...
- ltp-ddt git
ltp-ddt目录下有一个文件夹 confrVOaeL confvp5WrA 这个文件夹是由./configure --host=arm-linux-gnueabihf命令生成的. 每次configu ...
- numpy, matplotlib库学习笔记
Numpy库学习笔记: 1.array() 创建数组或者转化数组 例如,把列表转化为数组 >>>Np.array([1,2,3,4,5]) Array([1,2,3,4,5]) ...
- Bigger-Mai 养成计划,Python基础巩固二
模块初识1.标准库2.第三方库import sys sys.path #自己的本文件名不可为sys.py#输出模块存储的环境变量sys.argv #打印脚本的相对路径sys.argv[2] #取第二个 ...
- Java 问题定位工具 -- jps
概览 最近老大布置的任务就是质量加固,偶然看到了一些对于 Java 性能分析的介绍,因此,有了此篇学习笔记. JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jCons ...
- npm 是node.js下带的一个包管理工具
npm 是node.js下带的一个包管理工具 npm install -g webpack webpack是一个打包工具 gulp是一个基于流的构建工具,相对其他构件工具来说,更简洁 ...
- redux&&createStore
const createStore = (reducer,presetState, enhancer) => { if (typeof presetState === "functio ...
- Java基础知识盘点(三)- 线程篇
创建线程的方式及实现 一.继承Thread类创建线程类 1.定义Thread的子类,并重写run方法,因为该方法的方法体就是代表了线程要完成的任务,因此run方法又叫做执行体. 2.创建Thread子 ...