Arrays类包含用来操作数组的各种方法,还包含一个允许将数组作为列表来查看的静态工厂。逐一查阅,不便记忆。通过比较,本人发现只需要记住1/3就可以了,特归纳了一下,共享于大家。 计算机术语: a) 自然顺序:如果是基本类型(即原生数据),那就是自然顺序,由小到大。如果是对象,那就是比较哈希值,由小到大。 例如:集合的包含关系就是半序,也就是偏序,因为两个集合可以互不包含;而实数中的大小关系是全序,两个实数必有一个大于等于另一个;又如:复 数中的大小就是半序,虚数不能比较大小。 c) NaN,是Not a Number的缩写。java 用它处理计算中出现的错误情况,比如0.0除以0.0或求负数的平方根。 注意事项: 置JRE的路径,它就会使用版本的JRE。1.6版本才支持的方法如果你用到了1.5版本的JRE环境下,会不会报错?你知道的。 d)泛型:在public static <T> int binarySearch(T[] a, T key, Comparator<? super T> c)声明中的<T>就是泛型(已经专门整理了两篇学习笔记,请在mfkwine博客上查找)。 一、java.util.Arrays 1、equals 比较两个非同一数组是否相等,而数组本身的equals判断另一个数组是否它本身。 声明:public static boolean equals(type[]a,type[]a2) 参数:a -将测试其相等性的一个数组。a2 -将测试其相等性的另一个数组。参数的类型可以是原生数据类型和引用类型的任意一种类型。 返回:如果两个相等,则返回true。 描述:如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对应相等,则认为这两个数组是相等的。 注:equals()比较的在堆内存里存放的值, “==”则不确定,详情请参阅本人的另篇博文“比较陷阱”。 2、deepEquals 声明:public static boolean deepEquals(Object[] a1, Object[] a2) 描述:如果两个数组引用均为null,或者它们引用了包含相同元素数量的数组,并且两数组中的所有相应元素对都是深层相等的,则认为这两个数组引用是深层相等的。换言之,第一层引用元素都对应相等,即深层相等。 下列情况,两个null元素e1和e2可能是深层相等的。 参数: 返回:若两个指定数组彼此深层相等,返回true;否则返回false。 注意事项: b)如果指定数组中的任意一个数组直接或间接通过一个或多个数组级别,包含数组本身作为其元素,则此方法的结果是不明确的,即使用此方法的数组中的引用元素不能包含它本身。 3、fill -分配值给指定数组元素 //作用于数组的所有元素 //作用于数组指定范围内的元素 描述:将指定的类型值分配给元素。若指定了类型数组的元素范围(fromIdex到toIndex(不包括)),则对值分配给指定范围内的每个元素,否则分配给数组的所有元素。若fromIndex==toIndex,则填充范围为空。 参数: 4、sort -排序 //作用于数组的所有元素 //作用于数组指定范围内的元素 描述: 参数: 注: 1)double、float类型数组,使用Double.comparTo(java.lang.Double)强制使用全序排序,该排序认为-0.0<0.0并且NaN>任何其他浮点值,而所有的NaN值都等效且相等。而<关系式因为无法实现全序排序没有被采用。 2)对于object进行sort,需注意事项:
方法声明: 描述:根据指定比较器产生的顺序对指定对象数组(可指定范围)进行排序。数组中(或数组指定范围内的)所有元素都必须是通过指定比较器可相互比较的。也就是说,对于是数组中(可指定范围)的任何e1和e2元素而言,c.compare(e1,e2)不得抛出ClassCastException。 参数: 注意事项: 1)此排序不会对相等的元素重新排序,以保证数组的稳定性。 2)该排序算法采用的是改进过的合并排序算法(若低子列表中的最高元素小于高子列表中的最低元素,则忽略合并)。 5、binarySearch -使用二进制搜索算法搜索指定数组 声明: public static int binarySearch(type[] a, type key) public static int binarySearch(long[] a,int fromIndex,int toIndex,long key) public static <T> int binarySearch(T[] a, T key, Comparator<? super T> c) public static <T> int binarySearch(T[] a,int fromIndex,int toIndex,T key,Comparator<? super T> c) 描述: 参数: 返回: 注意事项: 1、此方法调用前必须先对数组进行排序(使用sort()方法)。否则,结果不确定。 2、如果数组包含多个带有指定值的元素,则无法保证打到的是哪一个。 3、type为double、float时,此方法认为NaN值都是等效且相等的。 抛出: ClassCastException -若搜索的key不能与数组的元素进行比较 6、toString() 声明:public static String toString(type[] a) 描述: 返回指定数组内容的字符串表示形式。 基本数组,字符串表示形式由数组的元素列表组成,括在[],相邻元素用“, ”(逗号加空格)分隔。这些元素通过String.valueof(type)转换为字符串。 如果a为null,则返回"null"。 object数组,如果数组包含作为元素的其他数组,则通过从Object中继承的Object.toString()方法将它们转换为字符串,这描述了它们的标识,而不是它们的内容。返回值等于Array.aslist(a).toString()的返回值。如果为null返回“null”。 参数: 返回:a的字符串表示形式 7、deepToString 声明: 8、copyOf -数组复制 声明: public static <T> T[] copyOf(T[] original,int newLength) public static <T,U> T[] copyOf(U[] original,int newLength,Class<? extends T[]> newType) 描述: 参数: 返回:原数组的副本,通过截取或默认值(类型由数组类型来决定)来得到指定的长度。 抛出: 注意事项: 填充的默认值数据由数组的类型决定,char类型为null('\\u000'),float、long、int、byte、double类型为0(0的类型由数组类型决定),boolean类型为false。 9、copyOfRange -复制指定范围元素到新数组 声明 public static <T> T[]
copyOfRange(T[] original,int from,int to) 描述: 可以大于原数组长度(original.length), 副本元素索引大于或等于(original.length - from)的全部放置为默认值i。 返回数组的长度为to - from. 。 参数: 返回: 抛出: 注意事项: 填充的默认值数据由数组的类型决定,char类型为null('\\u000'),float、long、int、byte、double类型为0(0的类型由数组类型决定),boolean类型为false。
1、Arrays类的方法,除个别方法不支持boolean型数组以外,基本上支持所有的数据类型。 2、deepEquals()方法实际上是Equals()方法的递归算法;deepToString()是toString()的递归。 3、搜索前必须先使用对应的sort方法排序。比如使用第三种方法指定比较器搜索前必须使用sort(T[],Comparator)方法。 4、Java指定范围时一般采用下包含方式,即包括范围的第一个索引,不包括范围的最后一个索引。fill()等方法里的范围fromIndex(首一个索引,包括) 、toIndex(最后一个索引,不包括);copyOfRange()方法里的方法from(首索引,包括),to(尾索引,不包括) 5、fill()、sort()、binarySearch()指定范围时,若fromIndex==toIndex时,范围为空,超出数组长度或fromIndex>toIndex都抛出异常。 |
|
来自: 昵称15242507 > 《员工考试》