Java为开发者提供了两个便利的操作数组的类,Array类提供了动态创建和访问数组的方法,Arrays提供了一系列用来操作数组的方法(如排序、查找),另外此类还包含一个允许将数组作为列表来查看的静态工厂
java.lang.Object
java.lang.reflect.Array
public final class Array extends Object
private Array()
这意味着Array
类不能被实例化
static Object get(Object array, int index)
static boolean getBoolean(Object array, int index)
static byte getByte(Object array, int index)
static char getChar(Object array, int index)
static double getDouble(Object array, int index)
static float getFloat(Object array, int index)
static int getInt(Object array, int index)
static long getLong(Object array, in index)
static short getShort(Object array, int index)
static Object newInstance(Class> componentType)
static Object newInstance(Class> componentType, int length)
static void set(Object array, int index, Object value)
static void setBoolean(Object array, int index, boolean z)
static void setByte(Object array, int index, byte b)
static void setChar(Object array, int index, char c)
static void setDouble(Object array, int index, double d)
static void setFloat(Object array, int index, flaot f)
static void setInt(Object array, int index, int i)
static void setLong(Object array, int index, long l)
static void setShort(Object array, int index, short s)
Array
类的方法全部都是静态方法,而且构造方法被private
修饰(是不是想到了Math类 :-)),它们的作用就是提供静态的函数库
从JDK1.2引入的Arrays类
java.lang.Object
java.util.Arrays
public class Arrays extends Object
private Arrays()
和Array
类一样,Arrays
类同样不能被实例化
/** Returns a fixed-size list backed by the specified array. */
static List asList(T...a)
/** Searchs a range of the specified array of ints for the specified value using the binary search algorithm. */
static int binarySearch(int[] a, int fromIndex, int toIndex, int toIndex, int key)
/** Copies the specified range of the specified array into a new aarray. */
static int[] copyOf(int[] original, int newLength, int from, int to)
/** Returns true if the two specified arrays of ints are equal to one another. */
static boolean equals(int[] a, int[] b)
/** Assigns the specified int value to each element of the specified range of the specified array of ints. */
static void fill(int[] a, int fromIndex, int toIndex, int val)
/** Sorts the specified range of the array into ascending order. */
static void sort(int[] a, int fromIndex, int toIndex)
/** Returns a string representation of the contents of the soecified array. */
static String toString(int[] a)
上面列出的是一些常用的方法,其中有fromIndex..toIndex
的,可以去掉(API方法已经重载,不用担心)
还有,使用二分查找Arrays.binarySearch(..)
对数组搜索时,又一个大前提是:数组是已经排序好的(有序数组才能用二分查找)
以及,Arrays.sort()
方法的几种常见用法要烂熟于心:
1)忽略大小写:sort(a, String.CASE_INSENSITIVE_ORDER)
2)反向排序:sort(a, Collections.reverseOrder())
另外,当Arrays.equals(..)
、Arrays.toString(..)
方法对多维数组无效时,考虑使用Arrays.deepEquals(..)
、Arrays.deepToString(..)
方法