首页 > 编程语言 > 详细

JAVA-数组-数组工具类Arrays类中的方法

时间:2020-05-12 22:30:00      阅读:66      评论:0      收藏:0      [点我收藏+]
  • 此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。
  • 除非特别注明,否则如果指定数组引用为 null,则此类中的方法都会抛出 NullPointerException
  • Arrays类中提供的static方法,直接使用类名调用就可以。
graph RL; java.util.Arrays-->java.lang.Object;

方法

  • copy复制数组
    static TYPE[] copyOf(TYPE[] original, int newLength)
    static TYPE[] copyOfRange(TYPE[] original, int from, int to)
    复制指定的数组,截取或用 false填充(如有必要),以使副本具有指定的长度。
public static void getSort() {
	int[] arrOne = {1, 2, 3, 4, 5};
	int[] arrTwo = new int[5];
	int[] arrThree = new int[10];
	// 将arrOne复制到arrTwo
	arrTwo = Arrays.copyOf(arrOne, 5);
	System.out.println("arrTwo" + Arrays.toString(arrTwo));
	/* arrTwo[1, 2, 3, 4, 5] */
	
	// 将arrOne的第3-5位拷贝成一个新数组并赋值给arrThree
	arrThree = Arrays.copyOfRange(arrOne, 2, 4);
	System.out.println("arrThree" + Arrays.toString(arrThree));
	/* arrThree[3, 4] */
	}
  • 二分查找
    static int binarySearch(TYPE[] a, TYPE key)
    static int binarySearch(TYPE[] a, int fromIndex, int toIndex, TYPE key)
    使用二分搜索法来搜索指定的类型型数组的范围,以获得指定的值。r如果查找不到,就返回key可能在的位置的负值-1
public static void search() {
	int[] arrOne = {1, 2, 3, 4, 5};
	// 查找
	int index = Arrays.binarySearch(arrOne, 4);
	int index1 = Arrays.binarySearch(arrOne, 7);
	System.out.println("4所在位置的索引为:" + index + 
			",7所在的索引值为:" + index1);
	/* 4所在位置的索引为:3,7所在的索引值为:-6 */
}
  • equals判断
    static boolean equals(TYPE[] a, TYPE[] a2)
    如果两个指定的 TYPE 型数组彼此相等,则返回 true。
public static void getEquals() {
	int[] arrOne = {1, 2, 3, 4, 5};
	int[] arrTwo = {1, 2, 3, 3, 3};
	int[] arrThree = {1};
	int[] arrFour = {1, 2, 3, 4, 5};
	System.out.println("完全相同的两个数组对比:" +
	    Arrays.equals(arrOne, arrFour));
	System.out.println("length相同元素不同的对比:" +
	    Arrays.equals(arrOne, arrTwo));
	System.out.println("length不同,元素也不同:" +
	    Arrays.equals(arrOne, arrThree));
	/*
	 * 完全相同的两个数组对比:true
	 * length相同元素不同的对比:false
	 * length不同,元素也不同:false
	 */
}

  • fill填充
    static void fill(TYPE[] a, TYPE val)
    static void fill(TYPE[] a, int fromIndex, int toIndex, TYPE val)
    将指定的 TYPE 值分配给指定 TYPE 型数组指定范围中的每个元素。
public static void getFill() {
	int[] arrOne = {1, 2, 3, 4, 5};
	int[] arrTwo = {1, 2, 3, 4, 5};
	// arrOne全部填充;arrTwo下标为1-3位的填充
	Arrays.fill(arrOne, 0);
	Arrays.fill(arrTwo, 1, 3, 0);
	System.out.println("填充后的arrOne:" + Arrays.toString(arrOne));
	System.out.println("填充后的arrTwo:" + Arrays.toString(arrTwo));
	/*
	 * 填充后的arrOne:[0, 0, 0, 0, 0] 
	 * 填充后的arrTwo:[1, 0, 0, 4, 5]
	 */
  • toString
    static String toString(TYPE[] a)
    返回指定数组内容的字符串表示形式。
  • 排序操作
    static void sort(TYPE[] a)
    对指定的 TYPE 型数组按数字升序进行排序。
public static void getSort1() {
	int[] arrOne = {2, 4, 763, 12, 34, 1213, 87};
	System.out.println("排序前的数组:" + Arrays.toString(arrOne));
	// 排序
	Arrays.sort(arrOne);
	System.out.println("排序后的数组:" + Arrays.toString(arrOne));
	/*
	 * 排序前的数组:[2, 4, 763, 12, 34, 1213, 87] 
	 * 排序后的数组:[2, 4, 12, 34, 87, 763, 1213]
	 */
	}
  • System类中的copyarray
    static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
    从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
// arraycopy()方法
int[] one = {1,2,3,4,5};
int[] two = {6,7,8};
System.arraycopy(two, 1, one, 3, 2);
System.out.println(Arrays.toString(one));
System.out.println(Arrays.toString(two));
/*
 * [1, 2, 3, 7, 8] [6, 7, 8]
 */

总结

  • Arrays类提供的方法中,有一个原则是包头不包尾。如fromIndex=1toIndex=4,要操作的元素下标为1,2,3,而4是不包含在内的,简单来记就是说toIndex-fromIndex的值就是会操作的元素个数。
  • 现在新增的带有deep的两个方法是用来操作多维数组的。

JAVA-数组-数组工具类Arrays类中的方法

原文:https://www.cnblogs.com/torain/p/12814711.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!