1、填充数组
Java
数组填充替换方法Arrays.fill()
举例如下:
import java.util.Arrays;public class FillDemo { public static void main(String[] args) { int arr[] = new int[5]; // 使用同一个值对数组进行填充 Arrays.fill(arr, 8); for (int i = 0; i < arr.length; i++) { System.out.println("第" + i + "个元素是:" + arr[i]); } }}
运行结果如下:
2、复制数组
Java
数组复制使用方法Arrays.copyOf以及Arrays.copyOfRange
(1)Arrays.copyOf
语法如下:
copyOf(arr,int newlength)
说一下newlength:int型常量,指复制后的新数组的长度。如果新数组的长度大于数组arr的长度,则用0填充(根据复制数组的类型来决定填充的值,整型数组用0填充,char型数组则使用null来填充);如果复制后的数组长度小于数组arr的长度,则会从数组arr的第一个元素开始截取至满足新数组长度为止。
举例如下:
import java.util.Arrays;public class CopyDemo { public static void main(String[] args) { int arr[] = new int[] { 23, 43, 12 }; int newarr[] = Arrays.copyOf(arr, 5); for (int i = 0; i < newarr.length; i++) { System.out.println(newarr[i]); } }}
运行结果如下:
(2)Arrays.copyOfRange
语法如下:
copyOfRange(arr,int fromIndex,int toIndex)
说一说后两个参数:
fromIndex:指定开始复制数组的索引位置。fromIndex必须在0至整个数组的长度之间。新数组包括索引是formIndex的元素。
toIndex:要复制范围的最后索引位置。可大于数组arr的长度。新数组不包括索引是toIndex的元素。
举例如下:
import java.util.Arrays;public class CopyOfRangeDemo { public static void main(String[] args) { int arr[] = new int[] { 23, 42, 12, 84, 10 }; int newarr[] = Arrays.copyOfRange(arr, 0, 8); for (int i = 0; i < newarr.length; i++) { System.out.println(newarr[i]); } }}
运行结果如下:
3、数组查询
Java
binarySearch()
此法为二分搜索法,故查询前需要用sort()方法将数组排序,如果数组没有排序,则结果是不确定的,另外如果数组中含有多个指定值的元素,则无法保证找到的是哪一个。
binarySearch()方法的返回值为:如果找到关键字,则返回值为关键字在数组中的位置索引,且索引从0开始;如果没有找到关键字,返回值为负的插入点值,所谓插入点值就是第一个比关键字
大的元素在数组中的位置索引,而且这个位置索引从1开始。
binarySearch(object[ ], object key);
binarySearch(object[ ], int fromIndex, int endIndex, object key);
举例如下:
public class SearchDemo { public static void main(String[] args) { int[] b = new int[] { 4, 25, 10, 95, 06, 21 }; System.out.println("原数组为:"); for (int dim1 : b) { System.out.print("" + dim1 + " "); } Arrays.sort(b); System.out.println("排序后为:"); for (int x : b) { System.out.print(x + " "); } System.out.println(); int index = Arrays.binarySearch(b, 2); System.out.println("关键字2的返回值为:" + index); index = Arrays.binarySearch(b, 20); System.out.println("关键字20的返回值为:" + index); index = Arrays.binarySearch(b, 30); System.out.println("关键字30的返回值为:" + index); index = Arrays.binarySearch(b, 100); System.out.println("关键字100的返回值为:" + index); index = Arrays.binarySearch(b, 10); System.out.println("关键字10的返回值为:" + index); }}
运行结果如下:
实例解析:
可以看到 关键字2并没有在数组中,而且2比数组中的任何一个元素都小,所以其插入点的值应为元素4的位置也就是1(没有找到关键字从1开始)
关键字20也不在数组中,数组中第一个比20大的数是21,所以20的插入点值为4(没用找到关键字从索引从1开始)
关键字100也不在数组中,而且100比数组中所有的元素都大,此时插入点值为length+1 为7(没有找到关键字索引从1开始)
关键字10在数组中,所以返回其在数组中的索引为2(找到关键字索引从0开始)
之所以计算插入点值时索引要从1开始算,是因为-0=0,如果从0开始算,那么上面例子中关键字2和关键字4的返回值就一样了。
Code
JavaCode-->JavaVSNet/arraydemo
C#Code-->