简介
大家好,我是平头哥。今天给大家分享的是java中的数组array。
java中的数组(array)是一种较高级的数据结构类型,它是相同类型变量的集合,可以使用共同的名字对它进行引用。数组可以是一维的,也可以是多维的,我们可以通过数组下标对其中的元素进行访问。
数组的使用
- 给数组赋值。通过fill方法可以给数组中的某段元素赋上相同值。
- 对数组排序。通过sort方法对数组中的某段元素排序。
- 数组比较。通过equals方法比较两个数组,判断数组中的元素值是否相同。
- 查找数组元素。通过binarySearch方法能对排过序的数组进行二分法查找。
实例代码
import java.util.Arrays;
/**
* Created by MXi4oyu on 2018/11/4.
*/
public class learn_array {
/**
* 整型数组的输出
* @param array 待输出的数组
*/
public static void outputArray(int [] array){
if (array!=null){
for(int i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
System.out.println();
}
}
public static void main(String [] args){
//1、填充数组,将array0中所有元素的值赋值为1
int [] array0 = new int[5];
Arrays.fill(array0,1);
System.out.println("执行Arrays.fill(array0,1)后,array0中的值为:");
outputArray(array0);
//2、给数组赋值,将array0中的第2~3个元素赋值为8
Arrays.fill(array0,2,4,8);
System.out.println("执行Arrays.fill(array0,2,4,8)后,array0中的值为:");
outputArray(array0);
//3、对数组排序,对数组中的第2~6个元素进行排序
int [] array1 = new int[]{7,8,3,12,6,3,5,4};
Arrays.sort(array1,2,7);
System.out.println("执行Arrays.sort(array1,2,7)后,array1中的值为:");
outputArray(array1);
//4、对整个数组进行排序
Arrays.sort(array1);
System.out.println("执行Arrays.sort(array1)后,array1中的值为:");
outputArray(array1);
//5、比较数组元素是否相等
System.out.println("array0与array1是否相等:");
System.out.println(Arrays.equals(array0,array1));
int [] array2 = (int[]) array1.clone();
System.out.println("array1与array2是否相等:");
System.out.println(Arrays.equals(array1,array2));
//6、使用二分法在数组中查找指定元素所在的下标(数组必须是排好序的,否则结果不正确)
Arrays.sort(array1);
System.out.println("元素8在array1中的位置:"+Arrays.binarySearch(array1,8));
//如果元素不存在数组中,则二分法查找结果为负数
System.out.println("元素9在array1中的位置:"+Arrays.binarySearch(array1,9));
}
}
输出结果:
执行Arrays.fill(array0,1)后,array0中的值为:
1 1 1 1 1
执行Arrays.fill(array0,2,4,8)后,array0中的值为:
1 1 8 8 1
执行Arrays.sort(array1,2,7)后,array1中的值为:
7 8 3 3 5 6 12 4
执行Arrays.sort(array1)后,array1中的值为:
3 3 4 5 6 7 8 12
array0与array1是否相等:
false
array1与array2是否相等:
true
元素8在array1中的位置:6
元素9在array1中的位置:-8
源码解析
-
使用Arrays的fill方法对数组赋值时,可以指定启始位置begin和终止位置end。这将只给下标在[begin,end)区间的数组元素赋值。注意:下标为end的元素不会被赋值。[begin,end)是半开区间。
-
使用Arrays的sort方法对数组进行排序时,也可以设定启始位置和终止位置。对区间[begin,end)内的数组进行排序,下标为end的元素不参与排序。sort方法按升序进行排序。
-
使用Arrays的binarySearch方法在数组中查找元素k时,使用的是二分法,即如果数组中间元素的值比k大时,则只从数组的前半部分元素中查找;否则只从数组的后半部分元素中查找,如此递归下去。因此,必须要求数组元素是按升序排序好的。如果找到了元素k,则返回它的下标值。如果有多个元素k,那么返回的结果可能是这些元素下标值的任意一个,并不一定是第k个元素的下标值。(平头哥表示尼玛,这有啥用?不解)
网友评论