使用Java类库:Array类、Arrays类

Java为开发者提供了两个便利的操作数组的类,Array类提供了动态创建和访问数组的方法,Arrays提供了一系列用来操作数组的方法(如排序、查找),另外此类还包含一个允许将数组作为列表来查看的静态工厂


Array类

继承关系

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类 :-)),它们的作用就是提供静态的函数库


Arrays类

从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(..)方法

你可能感兴趣的:(Java,语言)