java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的
1. 常用方法表
方法和说明 |
---|
static List asList(T… a) 返回由指定数组支持的固定大小的列表 |
static int binarySearch(Object[] a, Object key) 用二分查找算法在给定数组中搜索给定值的对象(Byte,Int,double等)。数组在调用前必须排序好的。如果查找值包含在数组中,则返回搜索键的索引;否则返回 (-(插入点) - 1)。 |
static int[] copyOf(int[] original, int newLength) 复制original并指定长度newLength的新数组,如果newLength小于原本数组的长度,则进行截断。相反则用0去补充。 |
static int[] copyOfRange(int[] original, int from, int to) 将指定数组的指定范围复制到新数组中,超出数组长度时会用0进行填充 |
static boolean equals(long[] a, long[] a2) 如果两个指定的 long 型数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的,则认为这两个数组是相等的。换句话说,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。 |
static void fill(int[] a, int val) 将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。 |
static void sort(Object[] a) 对指定对象数组根据其元素的自然顺序进行升序排列。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。 |
static void deepToString(Object[] a) 将多维数组以字符串的形式返回。形如:[[…],[…],[…]]。 |
2. 数组转集合
1 | String[] strArray = {"abc", "def", "ghi"}; |
由以上代码示例可以说明:
- 当将数组转换为List集合时,可以使用集合的方法来操作数组中的元素
- 因为数组的长度是固定的,所以对于有数组转换过来的List集合是不可以使用增删方法的,否则会发生UnsupportedOperationException异常
- 如果数组中的元素是对象,那么转成集合时,直接将数组中的元素作为集合中的元素进行集合存储,如上面的strArray转strList的例子。
- 如果数组中的元素是基本数据类型数值,那么会将该数组作为集合中的元素进行存储,如上面的numArray转numList的例子。
3. 集合转数组
1 | public void listToArray() { |
toArray方法传入一个指定类型的数组参数的情况:
- 如果数组长度小于集合的长度,那么该方法会创建一个同类型并和集合长度相同数组
- 如果数组长度小于集合的长度,那么该方法就会使用指定的数组长度以存储集合中的元素,其他位置默认为null
4. 拷贝元素
1 | int[] arr = {9, 8, 3, 5, 2}; //初始化一个数组 |
由以上代码示例可以说明:
- copyOfRange方法的最后一个参数是不包含的
- 如果后一个参数超出了原本数组大小-1的范围,那么以0补充多出的空位。