Java基础之---Arrays工具类
程序员文章站
2022-03-20 20:51:39
...
这次我们来讲讲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/
上一篇: Android 自定义ListView
下一篇: 实例化php类的时候如何传参