[Java学习之路篇] Java常用类库之Arrays

所在包:java.util

Arrays工具包提供了一些与数组有关的操作,如排序、二分查找、复制(copyOf)、比较、toString打印等。

常用方法及常量:

1. asList 创建列表

// 输入元素创建列表
public static <T> List<T> asList(T... a)

// 举例
 List<String> stooges = Arrays.asList("Larry", "Moe", "Curly"); 

此方法与 Collection.toArray() 结合使用,作为基于数组和基于集合的API之间的桥梁。 返回的列表是可序列化的并且实现了 RandomAccess

2. sort 排序

// sort 排序 基本数据类型 以int为例 默认升序
// 整个数组排序
public static void sort(int[] a)
// 从fromIndex(包括)到toIndex(不包括)范围内进行排序
public static void sort(int[] a, int fromIndex, int toIndex)

// sort 排序 引用数据类型 默认自然顺序 natural ordering 升序
public static void sort(Object[] a)
public static <T> void sort(T[] a, Comparator<? super T> c)
// 从fromIndex(包括)到toIndex(不包括)范围内进行排序
public static void sort(Object[] a, int fromIndex, int toIndex)
public static <T> void sort(T[] a, int fromIndex, int toIndex, Comparator<? super T> c)

说明:排序算法为双枢轴快速算法,该算法在许多数据集上提供O(n log(n))性能,导致其他快速排序降级为二次性能,并且通常比传统(单枢轴)Quicksort 实现更快。

3. binarySearch 二分查找

// binarySearch 查找 基本数据类型 数组格式都一样 以int举例
// 整个数组进行查找
public static int binarySearch(int[] a, int key)
// 从fromIndex(包括)到toIndex(不包括)范围内进行查找
public static int binarySearch(int[] a, int fromIndex, int toIndex, int key)

// binarySearch 查找 引用数据类型 数组格式都一样
// 整个数组进行查找 除Object类外 其余类均要实现Comparable接口才可以查找
// 或调用Comparator对象(匿名内部类实现)
public static int binarySearch(Object[] a, Object key)
public static <T> int binarySearch(T[] a, T key, Comparator<? super T> c)
// 从fromIndex(包括)到toIndex(不包括)范围内进行查找
public static int binarySearch(Object[] a, int fromIndex, int toIndex, Object key)
public static <T> int binarySearch(T[] a, int fromIndex, int toIndex, T key, Comparator<? super T> c)

注意:进行 binarySearch 二分查找 之前记得给数组进行 排序 sort

4. copyOf / copyOfRange 复制数组

// copyOf 复制 数组格式都一样 以int为例
// newlength是指定新的数组长度,比原来的数组小就截断,大就补零或null
public static int[] copyOf(int[] original, int newLength)
public static <T> T[] copyOf(T[] original, int newLength)
// U是T的子类
public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType)

// copyOfRange 从from(包含)到to(不包含)范围复制数组 数组格式都一样 以int为例
// 给的from超过数组范围会报ArrayIndexOutOfBoundsException
// to超范围会补零或null
public static int[] copyOfRange(int[] original, int from, int to)
public static <T> T[] copyOfRange(T[] original, int from, int to)
// U是T的子类
public static <T,U> T[] copyOfRange(U[] original, int from, int to, Class<? extends T[]> newType)

5. equals 比较数组是否相等

// equals 比较两个数组是否相等 基本数据类型 数组格式都一样 以int为例
public static boolean equals(int[] a, int[] a2)
// 指定数组范围进行比较 from(包含) to(不包含)
public static boolean equals(int[] a, int aFromIndex, int aToIndex, int[] b, int bFromIndex, int bToIndex)

// equals 比较两个数组是否相等 引用数据类型 数组格式都一样
public static boolean equals(Object[] a, Object[] a2)
public static <T> boolean equals(T[] a, T[] a2, Comparator<? super T> cmp)
// 指定数组范围进行比较 from(包含) to(不包含)
public static boolean equals(Object[] a, int aFromIndex, int aToIndex, Object[] b, int bFromIndex, int bToIndex)
public static <T> boolean equals(T[] a, int aFromIndex, int aToIndex, T[] b, int bFromIndex, int bToIndex, Comparator<? super T> cmp)

当需比较两个数组是否相等时,最好使用 Arrays.equals() 方法,因为如果直接使用 array1.equals(array2) 的话,它调用的是 Object 类的 equals 方法,相当于 array1 == array2 ,就不合要求了。
注意:若需比较 多维数组 ,请使用 deepEquals 方法

6. toString 打印数组

// toString 打印数组 这个方法用于显示数组元素非常方便
// 基本数据类型 以int为例
public static String toString(int[] a)
// 引用数据类型 统统转化为Object数组进行显示
public static String toString(Object[] a)

参考文献:JDK 11 API中文帮助文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值