java学习--工具类学习之Arrays(1)
2021-06-04 09:02
标签:als 字符串 copy int abs gns 假设 输出 下标 一、基本定义 Arrays类,全路径java.util.Arrays,主要功能为操作数组,调用方法为Array.方法名 二、常用方法 1. 可以将数组转化为相应的list集合,但是也只能转化为list,asList方法内部构建了一个内部静态类ArrayList, 这个ArrayList也继承自AbstractList,但并不是我们集合中常用的ArrayList,这两者是有区别的,需注意, 内部静态类AbstractList也实现了contains,forEach,replaceAll,sort,toArray等方法,但add,remove等方法则没有 2. void fill(int[] a, int val)、void fill(int[] a, int fromIndex, int toIndex, int val)、void fill(Object[] a, Object val)、void fill(Object[] a, int fromIndex, int toIndex, Object val) fill方法有多个重载,分别对应几种基本数据类型以及引用类型(Object), fill(int[] a, int val)会将整个数组的值全部覆盖为val fill(int[] a, int fromIndex, int toIndex, int val)则提供了可选的开头和结尾(不包括) 源码如下: 我们可以看到可选开头结尾的重载方法会先做数组越界的校验,防止非法输入 3. int[] copyOf(int[] original, int newLength)、int[] copyOfRange(int[] original, int from, int to) 存在多个重载方式,此处以int举例 从样例中我i们看到,copyOf复制后的数组长度可以大于复制前的数组,根据源码发现,超出的元素被填充为0,引用类型则填充为null 对于copyOfRange,可以选择复制的开头和结尾(不包括),且结尾下标可以大于原数组长度,超出的下标会被填充 4. boolean equals(int[] a, int[] a2)、boolean equals(Object[] a, Object[] a2) 比较2个数组是否相等,基本类型的元素会依次进行==判断,引用类型则会在判空后使用equals 5. String toString(int[] a) 假设我们想输出一个数组的全部元素,一种方法是利用循环遍历所有元素后挨个输出 但Arrays提供了一个方案可以直接调用,toString内部实现其实也是通过遍历来实现, 利用可变字符串StringBuilder来构建 java学习--工具类学习之Arrays(1) 标签:als 字符串 copy int abs gns 假设 输出 下标 原文地址:https://www.cnblogs.com/jchen104/p/14649061.htmlInteger[] array = new Integer[]{1,2,3};
int[] array2 = new int[]{1,2,3};
List
int[] array = new int[]{1,2,3};
Arrays.fill(array, 1);
Arrays.fill(array, 0, 2, 1);// {1,1,3}
String[] str = {"123"};
Arrays.fill(str, "1");
/**
* Assigns the specified double value to each element of the specified
* range of the specified array of doubles. The range to be filled
* extends from index fromIndex, inclusive, to index
* toIndex, exclusive. (If fromIndex==toIndex, the
* range to be filled is empty.)
*
* @param a the array to be filled
* @param fromIndex the index of the first element (inclusive) to be
* filled with the specified value
* @param toIndex the index of the last element (exclusive) to be
* filled with the specified value
* @param val the value to be stored in all elements of the array
* @throws IllegalArgumentException if fromIndex > toIndex
* @throws ArrayIndexOutOfBoundsException if fromIndex < 0 or
* toIndex > a.length
*/
public static void fill(double[] a, int fromIndex, int toIndex,double val){
rangeCheck(a.length, fromIndex, toIndex);
for (int i = fromIndex; i )
a[i] = val;
}
/**
* Assigns the specified float value to each element of the specified array
* of floats.
*
* @param a the array to be filled
* @param val the value to be stored in all elements of the array
*/
public static void fill(float[] a, float val) {
for (int i = 0, len = a.length; i )
a[i] = val;
}
/**
* Checks that {@code fromIndex} and {@code toIndex} are in
* the range and throws an exception if they aren‘t.
*/
private static void rangeCheck(int arrayLength, int fromIndex, int toIndex) {
if (fromIndex > toIndex) {
throw new IllegalArgumentException(
"fromIndex(" + fromIndex + ") > toIndex(" + toIndex + ")");
}
if (fromIndex ) {
throw new ArrayIndexOutOfBoundsException(fromIndex);
}
if (toIndex > arrayLength) {
throw new ArrayIndexOutOfBoundsException(toIndex);
}
}
int[] array = new int[]{1,2,3};
int[] array2 = Arrays.copyOf(array, 4);
public static int[] copyOf(int[] original, int newLength) {
int[] copy = new int[newLength];
System.arraycopy(original, 0, copy, 0,
Math.min(original.length, newLength));
return copy;
}
int[] array = new int[]{1,2,3,4,5,6,7,8,9};
int[] array2 = Arrays.copyOfRange(array, 3, 6);
int[] array3 = Arrays.copyOfRange(array, 3, 10);
/**
* Copies the specified range of the specified array into a new array.
* The initial index of the range (from) must lie between zero
* and original.length, inclusive. The value at
* original[from] is placed into the initial element of the copy
* (unless from == original.length or from == to).
* Values from subsequent elements in the original array are placed into
* subsequent elements in the copy. The final index of the range
* (to), which must be greater than or equal to from,
* may be greater than original.length, in which case
* 0 is placed in all elements of the copy whose index is
* greater than or equal to original.length - from. The length
* of the returned array will be to - from.
*
* @param original the array from which a range is to be copied
* @param from the initial index of the range to be copied, inclusive
* @param to the final index of the range to be copied, exclusive.
* (This index may lie outside the array.)
* @return a new array containing the specified range from the original array,
* truncated or padded with zeros to obtain the required length
* @throws ArrayIndexOutOfBoundsException if {@code from @code from > original.length}
* @throws IllegalArgumentException if from > to
* @throws NullPointerException if original is null
* @since 1.6
*/
public static int[] copyOfRange(int[] original, int from, int to) {
int newLength = to - from;
if (newLength )
throw new IllegalArgumentException(from + " > " + to);
int[] copy = new int[newLength];
System.arraycopy(original, from, copy, 0,
Math.min(original.length - from, newLength));
return copy;
}
public static boolean equals(int[] a, int[] a2) {
if (a==a2)
return true;
if (a==null || a2==null)
return false;
int length = a.length;
if (a2.length != length)
return false;
for (int i=0; i
public static String toString(int[] a) {
if (a == null)
return "null";
int iMax = a.length - 1;
if (iMax == -1)
return "[]";
StringBuilder b = new StringBuilder();
b.append(‘[‘);
for (int i = 0; ; i++) {
b.append(a[i]);
if (i == iMax)
return b.append(‘]‘).toString();
b.append(", ");
}
}
上一篇:Java异常
文章标题:java学习--工具类学习之Arrays(1)
文章链接:http://soscw.com/index.php/essay/90325.html