簡(jiǎn)介
大家好,我是平頭哥。今天給大家分享的是java中的數(shù)組array。
java中的數(shù)組(array)是一種較高級(jí)的數(shù)據(jù)結(jié)構(gòu)類型,它是相同類型變量的集合,可以使用共同的名字對(duì)它進(jìn)行引用。數(shù)組可以是一維的,也可以是多維的,我們可以通過(guò)數(shù)組下標(biāo)對(duì)其中的元素進(jìn)行訪問(wèn)。
數(shù)組的使用
- 給數(shù)組賦值。通過(guò)fill方法可以給數(shù)組中的某段元素賦上相同值。
- 對(duì)數(shù)組排序。通過(guò)sort方法對(duì)數(shù)組中的某段元素排序。
- 數(shù)組比較。通過(guò)equals方法比較兩個(gè)數(shù)組,判斷數(shù)組中的元素值是否相同。
- 查找數(shù)組元素。通過(guò)binarySearch方法能對(duì)排過(guò)序的數(shù)組進(jìn)行二分法查找。
實(shí)例代碼
import java.util.Arrays;
/**
* Created by MXi4oyu on 2018/11/4.
*/
public class learn_array {
/**
* 整型數(shù)組的輸出
* @param array 待輸出的數(shù)組
*/
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、填充數(shù)組,將array0中所有元素的值賦值為1
int [] array0 = new int[5];
Arrays.fill(array0,1);
System.out.println("執(zhí)行Arrays.fill(array0,1)后,array0中的值為:");
outputArray(array0);
//2、給數(shù)組賦值,將array0中的第2~3個(gè)元素賦值為8
Arrays.fill(array0,2,4,8);
System.out.println("執(zhí)行Arrays.fill(array0,2,4,8)后,array0中的值為:");
outputArray(array0);
//3、對(duì)數(shù)組排序,對(duì)數(shù)組中的第2~6個(gè)元素進(jìn)行排序
int [] array1 = new int[]{7,8,3,12,6,3,5,4};
Arrays.sort(array1,2,7);
System.out.println("執(zhí)行Arrays.sort(array1,2,7)后,array1中的值為:");
outputArray(array1);
//4、對(duì)整個(gè)數(shù)組進(jìn)行排序
Arrays.sort(array1);
System.out.println("執(zhí)行Arrays.sort(array1)后,array1中的值為:");
outputArray(array1);
//5、比較數(shù)組元素是否相等
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、使用二分法在數(shù)組中查找指定元素所在的下標(biāo)(數(shù)組必須是排好序的,否則結(jié)果不正確)
Arrays.sort(array1);
System.out.println("元素8在array1中的位置:"+Arrays.binarySearch(array1,8));
//如果元素不存在數(shù)組中,則二分法查找結(jié)果為負(fù)數(shù)
System.out.println("元素9在array1中的位置:"+Arrays.binarySearch(array1,9));
}
}
輸出結(jié)果:
執(zhí)行Arrays.fill(array0,1)后,array0中的值為:
1 1 1 1 1
執(zhí)行Arrays.fill(array0,2,4,8)后,array0中的值為:
1 1 8 8 1
執(zhí)行Arrays.sort(array1,2,7)后,array1中的值為:
7 8 3 3 5 6 12 4
執(zhí)行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方法對(duì)數(shù)組賦值時(shí),可以指定啟始位置begin和終止位置end。這將只給下標(biāo)在[begin,end)區(qū)間的數(shù)組元素賦值。注意:下標(biāo)為end的元素不會(huì)被賦值。[begin,end)是半開(kāi)區(qū)間。
使用Arrays的sort方法對(duì)數(shù)組進(jìn)行排序時(shí),也可以設(shè)定啟始位置和終止位置。對(duì)區(qū)間[begin,end)內(nèi)的數(shù)組進(jìn)行排序,下標(biāo)為end的元素不參與排序。sort方法按升序進(jìn)行排序。
使用Arrays的binarySearch方法在數(shù)組中查找元素k時(shí),使用的是二分法,即如果數(shù)組中間元素的值比k大時(shí),則只從數(shù)組的前半部分元素中查找;否則只從數(shù)組的后半部分元素中查找,如此遞歸下去。因此,必須要求數(shù)組元素是按升序排序好的。如果找到了元素k,則返回它的下標(biāo)值。如果有多個(gè)元素k,那么返回的結(jié)果可能是這些元素下標(biāo)值的任意一個(gè),并不一定是第k個(gè)元素的下標(biāo)值。(平頭哥表示尼瑪,這有啥用?不解)