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 ...
随机推荐
- Java基础语法-Lambda表达式
1.Lambda表达式主要用于简写接口的操作等出现匿名内部类的地方,如下:我这里先定义一个Swim接口,以及它所定义的swim()方法 interface Swim{ void swim(); } 2 ...
- python 之路 day5 - 常用模块
模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser has ...
- Linq高级查询,分页查询及查询分页结合
一.高级查询与分页查询 1.以...开头 StartsWith Repeater1.DataSource=con.Users.Where(r=>r.Nickname.StartsWith( ...
- [转]SQL中 OVER(PARTITION BY) 取上一条,下一条等
OVER(PARTITION BY)函数介绍 开窗函数 Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返 ...
- 远程执行shell脚本的小技巧
很多时候需要批量跑脚本执行任务,但又不想分发再执行,而是直接一条命令下去就跑脚本,该怎么玩比较嗨? 例如以下脚本: #!/bin/bash echo "$@" echo " ...
- 获取手机当前显示的ViewController
//获取手机当前显示的ViewController - (UIViewController*)currentViewController{ UIViewController* vc = [UIAppl ...
- HBase根据Rowkey批量查询数据JAVA API(一次查多条,返回多个记录)
最近在生产中遇到了一个需求,前台给我多个rowkey的List,要在hbase中查询多个记录(返回给前台list).在网上也查了很多,不过自己都不太满意,filter的功能有可能查询结果不是准确值,而 ...
- [minecraft]mcCoder制作有感
mcCoder是一个minecraft-forge-mod制作库,力图让mod制作者可以更简单的制作mod,减少mod制作者的mod制作难度. 在GitHub上关注这个项目: 原理 mcCoder主要 ...
- SAP 跨公司销售业务
SAP 跨公司销售业务 http://blog.sina.com.cn/s/blog_95ac31e30102x5wh.html 分类: SAP_SD SAP 跨公司销售业务 一.业务简介 在由 ...
- 【python 3】 函数 进阶
函数进阶 1.函数命名空间和作用域 命名空间一共分为三种: 全局命名空间 局部命名空间 内置命名空间 *内置命名空间中存放了python解释器为我们提供的名字:input , print , str ...