码迷,mamicode.com
首页 > 编程语言 > 详细

java编程日记1

时间:2015-10-24 20:12:56      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:

一、java.util.Arrays

 

1equals

 

比较两个非同一数组是否相等,而数组本身的equals判断另一个数组是否它本身。

 

声明:public static boolean equals(type[]a,type[]a2)

 

参数:a -将测试其相等性的一个数组。a2 -将测试其相等性的另一个数组。参数的类型可以是原生数据类型和引用类型的任意一种类型。

 

返回:如果两个相等,则返回true

 

描述:如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对应相等,则认为这两个数组是相等的。

此外,如果两个数组引用都为null,则认为它们是相等的。e1==null ? e2=null: e1.equals(e2),则认为e1e2两个对象相等。

 

注:equals()比较的在堆内存里存放的值, “==”则不确定,详情请参阅本人的另篇博文“比较陷阱”。

 

2deepEquals

 

声明:public static boolean deepEquals(Object[] a1, Object[] a2)

 

描述:如果两个数组引用均为null,或者它们引用了包含相同元素数量的数组,并且两数组中的所有相应元素对都是深层相等的,则认为这两个数组引用是深层相等的。换言之,第一层引用元素都对应相等,即深层相等。

 

下列情况,两个null元素e1e2可能是深层相等的。

a) e1 和 e2 都是对象引用类型的数组,并且 Arrays.deepEquals(e1, e2) 将返回 true

b) e1 和 e2 都是相同基本类型的数组,并且 Arrays.equals(e1, e2) 的适当重载将返回 true

c) e1 == e2

d) e1.equals(e2) 将返回 true

 

参数:

a1 - 将测试其相等性的一个数组

a2 - 将测试其相等性的另一个数组

 

返回:若两个指定数组彼此深层相等,返回true;否则返回false

 

注意事项:

a)此方法支持任意深度的null元素。

 

b)如果指定数组中的任意一个数组直接或间接通过一个或多个数组级别,包含数组本身作为其元素,则此方法的结果是不明确的,即使用此方法的数组中的引用元素不能包含它本身。

 

3fill -分配值给指定数组元素

 

//作用于数组的所有元素

public static void fill(type[] a, type val)

 

//作用于数组指定范围内的元素

public static void fill(type[] a, int fromIndex, int toIndex, type val)

 

描述:将指定的类型值分配给元素。若指定了类型数组的元素范围(fromIdextoIndex(不包括)),则对值分配给指定范围内的每个元素,否则分配给数组的所有元素。若fromIndex==toIndex,则填充范围为空。

 

参数:

a -要填充的数组。

val -要存储在数组元素中的值

type -数据类型,可以是任意类型(包括原生数据类型和对象数据类型)。

fromIndex - 要使用指定值填充的第一个元素的索引(包括)。

toIndex - 要使用指定值填充的最后一个元素的索引(不包括)。

 

4sort -排序

 

//作用于数组的所有元素

public static void sort(type[] a)

 

//作用于数组指定范围内的元素

public static void sort(type[] a, int fromIndex, int toIndex)

 

描述:

将指定的类型(除boolean以外的任意原生数据类型)数组所有元素(或指定范围内的元素)按数字升序进行排序。

object型数组,根据元素的自然顺序,对指定对象数组进行升序排序。

fromIndex==toIndex,则排序范围为空)

 

参数:

a -要排序的数组。

fromIndex -要排序的第一个元素的索引(包括)

toIndex -要排序的最后一个元素(不包括)

type -数据类型可以是除boolean类型以外的所有原生数据和object型数据。

 

注:

 

1)doublefloat类型数组,使用Double.comparTo(java.lang.Double)强制使用全序排序,该排序认为-0.0<0.0并且NaN>任何其他浮点值,而所有的NaN值都等效且相等。而<关系式因为无法实现全序排序没有被采用。

 

2)对于object进行sort,需注意事项:

 

  a) object类型数组中所有元素都必须实现Comparable接口,是可相互比较的。也就是说,数组中的任何e1e2元素而言,e1.compareTo(e2)不得抛出ClassCastException

 

  b) 对于object型数组,此排序不会对相等的元素重新排序,以保证数组的稳定性。

 

  c)对于object型数组,该排序算法采用的是改进过的合并排序算法(若低子列表中的最高元素小于高子列表中的最低元素,则忽略合并)。

 

 

//使用指定比较器排序

 

方法声明:

public static <T> void sort(T[] a, Comparator<? super T> c)

public static <T> void sort(T[] a, int fromIndex, int toIndex, Comparator<? super T> c)

 

描述:根据指定比较器产生的顺序对指定对象数组(可指定范围)进行排序。数组中(或数组指定范围内的)所有元素都必须是通过指定比较器可相互比较的。也就是说,对于是数组中(可指定范围)的任何e1e2元素而言,c.compare(e1,e2)不得抛出ClassCastException

 

参数:

a -要排序的数组。

c -确定数组顺序的比较器。null值表示使用元素的自然顺序。

fromIndex - 要排序的第一个元素的索引(包括)。

toIndex - 要排序的最后一个元素的索引(不包括)。

 

注意事项:

 

1)此排序不会对相等的元素重新排序,以保证数组的稳定性。

 

2)该排序算法采用的是改进过的合并排序算法(若低子列表中的最高元素小于高子列表中的最低元素,则忽略合并)。

 

5binarySearch -使用二进制搜索算法搜索指定数组

 

声明:

 

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)

 

描述:

使用二进制搜索算法搜索指定的type型数组,以获得指定的值。

 

参数:

a - 要搜索的数组。

key - 要搜索的值。

fromIndex - 要排序的第一个元素的索引(包括)。

toIndex - 要排序的最后一个元素的索引(不包括)。

type -bytedoublefloatobjectlongintshortchar

c - 用来对数组进行排序的比较器。null 值指示应该使用元素的自然顺序。

 

返回:

如果搜索成功,返回Key的索引;否则返回(插入点-1)。插入点被定义为将Key插入数组的那一点,即如果数组里的所有元素小于指定的key,返回大于key或者数组长度(a.length)的第一个元素。注意:这保证了当且仅当key被找到时,返回值将>=0

 

注意事项:

 

1、此方法调用前必须先对数组进行排序(使用sort()方法)。否则,结果不确定。

 

2、如果数组包含多个带有指定值的元素,则无法保证打到的是哪一个。

 

3typedoublefloat时,此方法认为NaN值都是等效且相等的。

java编程日记1

标签:

原文地址:http://www.cnblogs.com/twentytwo/p/4907392.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!