1. 描述
Arrays工具类提供了针对数组(Array)的一些操作,比如排序、搜索、将数组(Array)转换列表(List)等等,都为静态(static)方法:
- binarySearch - 使用二进制搜索算法来搜索指定数组,以获得指定对象。在进行此调用之前,必须根据指定的比较器(通过上面的 Sort(Object[]、Comparator) 方法)对数组进行升序排序。
- deepToString - 返回指定嵌套(多维)数组的字符串表示形式。
- equals - 判断两个数组是否相等
- fill - 给数组赋值
- sort - 对数组进行排序,有多种实现。可以自定义比较器,可以自定义排序起止位置。
- toString - 返回指定数组内容的字符串表示形式。
- toList - 返回一个受指定数组支持的固定大小的列表。
数组(Array)与列表(List)可以互相转换,通过Arrays工具类的asList方法及List接口的toArray()方法。
2. 示范代码
package com.clzhang.sample.collections; import java.util.*; import org.junit.Test; public class ArraysTest { @Test public void testToString() { final int ARRAY_SIZE = 10; int[] array1 = new int[ARRAY_SIZE]; for (int i = 0; i < ARRAY_SIZE; i++) array1[i] = i; // toString用法 System.out.println("Arrays.toString用法:" + Arrays.toString(array1)); final int DEEP_ARRAY_SIZE = 3; int[][] array2 = new int[DEEP_ARRAY_SIZE][DEEP_ARRAY_SIZE]; for (int i = 0; i < DEEP_ARRAY_SIZE; i++) for (int j = 0; j < DEEP_ARRAY_SIZE; j++) array2[i][j] = i + j; // deepToString用法 System.out.println("Arrays.deepToString用法:" + Arrays.deepToString(array2)); } @Test public void testOther() { final int ARRAY_SIZE = 5; int[] array = new int[ARRAY_SIZE]; // fill填充 Arrays.fill(array, 5); System.out.println("fill后值:" + Arrays.toString(array)); // sort排序,先填充随机值,然后排序 Random random = new Random(); for (int i = 0; i < ARRAY_SIZE; i++) array[i] = random.nextInt(ARRAY_SIZE * 10); System.out.println("原始顺序:" + Arrays.toString(array)); Arrays.sort(array); System.out.println("sort后顺序:" + Arrays.toString(array)); // binarySearch搜索,先设置一个值,然后找 array[3] = 37; int pos = Arrays.binarySearch(array, 37); System.out.println("查找到的位置:" + pos); // Arrays.asList方法调用 String[] strarray = new String[ARRAY_SIZE]; for (int i = 0; i < ARRAY_SIZE; i++) strarray[i] = "str" + i; System.out.println("Arrays.asList将Array转换为List后,对List遍历:"); List<String> list = Arrays.asList(strarray); for (String str : list) System.out.println(str); // List接口的toArray方法调用 System.out.println("List接口的toArray方法将List转换为Array后,对Array遍历:"); String[] secondStrArray = (String[]) list.toArray(); for (int i = 0; i < secondStrArray.length; i++) System.out.println(secondStrArray[i]); } }
输出:
fill后值:[5, 5, 5, 5, 5]
原始顺序:[20, 45, 48, 14, 13]
sort后顺序:[13, 14, 20, 45, 48]
查找到的位置:3
Arrays.asList将Array转换为List后,对List遍历:
str0
str1
str2
str3
str4
List接口的toArray方法将List转换为Array后,对Array遍历:
str0
str1
str2
str3
str4
Arrays.toString用法:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Arrays.deepToString用法:[[0, 1, 2], [1, 2, 3], [2, 3, 4]]