Java数组中几种简单的基本操作

  数组是我们经常能用到的,我们可以在数组中存储一组数据,通过不同的需求进行不同到操作。而java中的数组又与C#和javascript中使用的数组有所不同。它不能直接使用像push、splice、shift、short等方法,java中的数组对象没有提供这些方法,要想操作数组,就要通过java提供的一个工具类Arrays来进行操作,这个工具类提供了一些简单操作数组的静态方法供我们直接调用。下面介绍几种给大家认识一下。
  说明Arrays类对以下操作提供了多种重载形式,可对任意类型的数组进行操作。这里我已int型为例。
  1. 第一种:数组填充fill()
在数组定义完成后,可以通过Arrays类的静态方法fill()来对数组进行填充,该方法有两种参数类型,语法如下:
(1) 全部填充fill(int[] a,int value):该方法可将指定的int值分配给int型数组a的每个元素。
(2) 局部填充fill(int[] a,int fromIndex,int toIndex,int value):该方法将指定的int值分配给指定的int型数组的指定范围中的每个元素。填充范围从fromIndex(包括)一直到toIndex(不包括)。如果两者相等则表示填充范围为空。
下面是代码示例:

public class ArrayFill {
	public static void main(String[] args) {
		int array[] = new int[5];
		Arrays.fill(array, 3);// 全部填充
		System.out.print("全部填充:");
		for (int i : array) {
			System.out.print(i + ",");
		}
		System.out.println();
		Arrays.fill(array, 1, 2, 0);// 局部填充(左闭右开)
		System.out.print("局部填充:");
		for (int i : array) {
			System.out.print(i + ",");
		}
	}
}

打印结果:全部填充:3,3,3,3,3, ,局部填充:3,0,3,3,3,
注意:这里是填充不是追加,如果数组中要填充的位置已有元素,则会把原元素替换为要填充的元素。
  2. 第二种:数组排序sort()
通过Arrays类的静态方法sort()可以实现对数组的排序。语法如下:Arrays.sort(objcet),object为要进行排序的数组对象。
下面是代码示例:

public class ArraySort {
	public static void main(String[] args) {
		int intA[] = new int[] { 5, 3, 10, 7, 1 };
		Arrays.sort(intA);// 排序
		for (int i : intA) {
			System.out.print(i + ",");
		}
	}
}

打印结果:1,3,5,7,10,
  3. 第三种:复制数组copyOf()copyOfRange()
copyOf(arr,int newLength) 是复制数组arr至指定长度newLength,生成一个长度为newLength的新数组。如果newLength的长度大于arr的长度,那么则用0填充(根据数组的类型来决定填充值,整型用0,char型用null来填充)。copyOfRange(arr,int fromIndex,int toIndex) 则是将指定数组的指定长度生成为一个新数组,超过长度同样会进行填充,范围取值同样也是左闭右开。
下面是代码示例:

public class ArrayCopy {
	public static void main(String[] args) {
		int array[] = new int[] { 5, 3, 10, 7, 1 };
		int newArray[] = Arrays.copyOf(array, 8); // 复制
		System.out.print("复制全部:");
		for (int i : newArray) {
			System.out.print(i + ",");
		}
		System.out.println();
		int newArray2[] = Arrays.copyOfRange(array, 2, 4); // 局部复制
		System.out.print("复制部分:");
		for (int i : newArray2) {
			System.out.print(i + ",");
		}
	}
}

打印结果:复制全部:5,3,10,7,1,0,0,0, ,复制部分:10,7,
  4. 第四种:数组查询binarySearch()
Arrays类的binarySearch()方法,可使用而二分查找法来搜索指定的数组,以获得指定的对象。该方法返回要搜索元素的索引值。语法如下:
(1) 全部搜索binarySearch(Objcet[] a,Object key)
(2) 局部搜索binarySearch(Objcet[] a,int fromIndex,int toIndex,Object key)
下面是代码示例:

public class ArrayBinarySearch {
	public static void main(String[] args) {
		int array[] = new int[] { 5, 3, 10, 7, 1 };
		 java.util.Arrays.sort(array);// 排序
		 int index = java.util.Arrays.binarySearch(array, 10);// 查询
		 int index2 = java.util.Arrays.binarySearch(array, 1, 3, 10);//查询(左闭右开)
		 System.out.println("全范围:" + index);
		 System.out.println("部分范围:" + index2);
	}
}

打印结果:4 ,-4。
注意:必须在调用此方法前对数组进行排序。如果没有对数组进行排序,则结果是不确定的,返回到索引值也是排序后元素的索引值。如果数组包含多个带有指定值的元素,则无法保证找到的是哪一个。如果指定的范围大于或等于数组的长度,则会报数组索引越界异常。

你可能感兴趣的:(基础知识小结)