欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java基础之---Arrays工具类

程序员文章站 2022-03-20 18:28:20
...

 

      这次我们来讲讲Arrays工具类,这个工具类在java.util包下,这个工具类包括了许多对数组进行操作的方法,比如对数组排序和查找。还包括了一个静态工厂,能让数组作为List(列表)来访问。

 

     接下来详细讲讲这个工具类的所有公共方法。

public static void sort(long[] a) 这个方法会将一个long类型数组进行排序,java原码中有说明,这个排序是用快速排序算法实现的。

 

    示例代码

 

   

                                long[] a={1,3,2,4,6,8,7};
		
		System.out.println("排序前:");
		for(int i=0;i<a.length;i++)
		{
		System.out.println(a[i]);	
		}
		Arrays.sort(a);
		System.out.println("排序后:");
		for(int i=0;i<a.length;i++)
		{
			System.out.println(a[i]);	
		}

 

    运行结果

排序前:
1
3
2
4
6
8
7
排序后:
1
2
3
4
6
7
8

 

  

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

a 被排序的数组
fromIndex 需要排序的起始位置,包括fromIndex这个位置的元素。
toIndex需要排序的结束位置,不包括toIndex这个位置的元素。

这个方法会把给定的long 类型数组按指定的排序起始位置的结束位置来排序。

 

    示例代码

 

                                 long[] a={6,3,2,4,1,5,8,7};
		
		System.out.println("排序前:");
		for(int i=0;i<a.length;i++)
		{
		System.out.println(a[i]);	
		}
		Arrays.sort(a,0,4);//从0开始到4(不包括4)
		System.out.println("排序后:");
		for(int i=0;i<a.length;i++)
		{
			System.out.println(a[i]);	
		}

 

 运行结果

 

排序前:
6
3
2
4
1
5
8
7
排序后:
2
3
4
6
1
5
8
7

  

 

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

a:指定数组
key:要查找的元素
返回这个元素所在的索引位置

给定一个long类型数组,一个要查找的元素,此方法实现会返回该元素的的索引位置。当查找的元素不存在时返回“-1”。需要注意的是,这个给定的long类型数组必须是经过排序的,不然会返回不确定的结果!

 

 示例代码

long[] a={6,3,2,4,1,5,8,7};
		Arrays.sort(a);
		System.out.println("排序后:");
		for(int i=0;i<a.length;i++)
		{
			System.out.print(" "+a[i]);	
		}
		System.out.println(" ");
		System.out.println("1的索引位置为:"+Arrays.binarySearch(a, 1));

 

运行结果

 

排序后:

 1 2 3 4 5 6 7 8 

1 的索引位置为:0

 

 

public static String deepToString(Object[] a) 

a:Object类型数组

结果打印出这个素组中的所有元素,及元素的子元素!

 

示列代码

long[] a={6,3,2,4,1,5,8,7};
		Object[] b={1,2,3,a};
		System.out.println("调用deepToString方法后的结果为:"+Arrays.deepToString(b));
	

 

运行结果

调用deepToString方法后的结果为:[1, 2, 3, [6, 3, 2, 4, 1, 5, 8, 7]]

 

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

a:Long类型数组
fromIndex:填充起始位置
toIndex:填充结束位置(不包括这个位置的元素)
val:用来填充的数值

该方法根会将指定的数组从fromIndex开始到toIndex(不包括这个位置)的所有元素用val填充,当fromIndex=toIndex时,此操作并无意义,当fromIndex>toIndex时抛异常。

 

示例代码

	long[] a={6,3,2,4,1,5,8,7};
		Arrays.fill(a,0,3,1 );
		System.out.println("调用fill方法后的结果为:");
		for(int i=0;i<a.length;i++)
		{
				System.out.print(" "+a[i]);	
		}

 

运行结果

调用fill方法后的结果为:
 1 1 1 4 1 5 8 7

 

 

其实public static void fill(long[] a, int fromIndex, int toIndex, long val) 方法是public static void fill(long[] a,  long val)  的重载方法,而public static void fill(long[] a,  long val) 这个方法很明显,是将指定的数组的所有元素都用val填充,示例就省略不写啦!
  public static boolean deepEquals(Object[] a1, Object[] a2) 

  该方法可对将两个Object类型数组作深度比较,即只有a2和a2所有的元素和元素的子元素全部相等时,才会反回true。

 示例代码

                long[] a={6,3,2,4,1,5,8,7};
		long[] b={6,3,2,4,1,5,8,7};
		long[] c={0,3,2,4,1,5,8,7};
		Object[] e={1,2,3,a};
		Object[] f={1,2,3,b};
		Object[] g={1,2,3,c};
		System.out.println(Arrays.deepEquals(e, f));
		System.out.println(Arrays.deepEquals(f, g));

 

运行结果

true
false

 

 

Arrays类提供了其它基本类型以上所有的方法的实现,这里就不一一赘述了!!

 我的网店,有劳各位参观参观 http://mrs-x.taobao.com/