工具类Arrays

Arrays

java.lang.Object

java.util.Arrays

此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。

除非特别注明,否则如果指定数组引用为 null,则此类中的方法都会抛出 NullPointerException。 

 

通过以下代码讲解Arrays工具类中的各种方法的作用

sort:

对指定类型数组的指定范围按数字升序进行排序。排序的范围从索引 fromIndex(包括)一直到索引 toIndex(不包括)。(如果 fromIndex==toIndex,则排序范围为空。)

该排序算法是一个经过调优的快速排序法,改编自 Jon L. Bentley 和 M. Douglas McIlroy 合著的 Engineering a Sort Function", Software-Practice and Experience Vol. 23(11) P. 1249-1265 (November 1993)。此算法在许多数据集上提供 n*log(n) 性能,这导致其他快速排序会降低二次型性能。  

 

import java.util.Arrays;
public class ArrayTools {
    public static void main(String[] args)
    {
        int a[]=new int[]{1,3,2,4,6,5};
        //排序
        Arrays.sort(a);
        for(int i=0;i<a.length;i++)
        {
            System.out.print(a[i]+" ");
        }
    }
}

binarySearch:

public static int binarySearch(object []a,object key)

使用二分搜索法来搜索指定类型数组的范围,以获得指定的值。必须在进行此调用之前对范围进行排序(通过 sort(byte[], int, int) 方法)。如果没有对范围进行排序,则结果是不确定的。如果范围包含多个带有指定值的元素,则无法保证找到的是哪一个。 

参数:

a - 要搜索的数组

key - 要搜索的值 

返回:

如果它包含在数组中,则返回搜索键的索引;否则返回 (-(插入点) - 1)插入点 被定义为将键插入数组的那一点:即第一个大于此键的元素索引,如果数组中的所有元素都小于指定的键,则为 a.length。注意,这保证了当且仅当此键被找到时,返回的值将 >= 0。

//二分搜索
        int key=Arrays.binarySearch(a,3);
        System.out.print("key:\n"+key);
//不在数组内
    int key2=Arrays.binarySearch(a,7);
    System.out.print("key:\n"+key2+"\n");//-7,实际上并没有插入数组,只是返回插入点

 

binarySearch(object[ ], int fromIndex, int endIndex, object key):

a - 要搜索的数组

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

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

key - 要搜索的值 

 

equals

public static boolean equals(object[] a,object[] a2)

参数:

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

返回:
如果两个数组相等,则返回 true,反之返回false
//equals
        int c[]=new int[]{1,2,3,7,8,9};
        int b[]=new int[]{1,2,3,4,5,6};
        System.out.print(Arrays.equals(b,c));

 

 

hashCode:

public static int hashCode(object[] a)

参数:

a - 要计算其哈希值的数组 

返回:

a 数组基于内容的哈希码

hashCode不但能计算数组的哈希值,也能够计算string类的哈希值,每个对象都有对应的hashcode,hashcode也就是在哈希表中的位置 ,这里要注意,物理地址的概念和哈希值没有半毛钱关系,物理地址是对象在内存中的地址。hashcode通过hash函数得到。

常见的hash函数:

  -直接取余法:f(x)=x mod maxM(maxM一般是不太接近2^t的一个质数)

  -乘法取整法

  -平方取中法:平方后取中

Java中的hashCode方法:

//数组hash值
int b[]=new int[]{1,2,3,4,5,6};
System.out.print("\n"+Arrays.hashCode(b));
//字符串hash值
String str=new String("www");
System.out.print("\n"+str.hashCode());

 

toString:

返回指定数组内容的字符串表示形式。如果数组包含作为元素的其他数组,则通过从 Object 中继承的 Object.toString() 方法将它们转换为字符串,这描述了它们的标识,而不是它们的内容。

此方法返回的值等于 Arrays.asList(a).toString() 返回的值,除非 anull,在这种情况下返回 "null"。 

//toString((带逗号分隔)
int c[]=new int[]{1,2,3,7,8,9};
System.out.print("\n"+Arrays.toString(c));

工具类Arrays

 

deepToString:

返回指定数组“深层内容”的字符串表示形式。如果数组包含作为元素的其他数组,则字符串表示形式包含其内容等。此方法是为了将多维数组转换为字符串而设计的。

//deepToString
int k[][]=new int[][]{{1,2,3},{1,2,3}};
System.out.print(Arrays.deepToString(k));

工具类Arrays

 

工具类Arrays

上一篇:fastadmin --动态下拉(selectpage)


下一篇:AutoService