簡介
大家好,我是平頭哥畴蹭。今天給大家分享的是java中的數(shù)組array呢铆。
java中的數(shù)組(array)是一種較高級的數(shù)據(jù)結(jié)構(gòu)類型,它是相同類型變量的集合谋币,可以使用共同的名字對它進行引用。數(shù)組可以是一維的症概,也可以是多維的蕾额,我們可以通過數(shù)組下標對其中的元素進行訪問。
數(shù)組的使用
- 給數(shù)組賦值穴豫。通過fill方法可以給數(shù)組中的某段元素賦上相同值凡简。
- 對數(shù)組排序。通過sort方法對數(shù)組中的某段元素排序精肃。
- 數(shù)組比較秤涩。通過equals方法比較兩個數(shù)組,判斷數(shù)組中的元素值是否相同司抱。
- 查找數(shù)組元素筐眷。通過binarySearch方法能對排過序的數(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個元素賦值為8
Arrays.fill(array0,2,4,8);
System.out.println("執(zhí)行Arrays.fill(array0,2,4,8)后烈炭,array0中的值為:");
outputArray(array0);
//3、對數(shù)組排序,對數(shù)組中的第2~6個元素進行排序
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符隙、對整個數(shù)組進行排序
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ù)組中查找指定元素所在的下標(數(shù)組必須是排好序的,否則結(jié)果不正確)
Arrays.sort(array1);
System.out.println("元素8在array1中的位置:"+Arrays.binarySearch(array1,8));
//如果元素不存在數(shù)組中综芥,則二分法查找結(jié)果為負數(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方法對數(shù)組賦值時,可以指定啟始位置begin和終止位置end额各。這將只給下標在[begin,end)區(qū)間的數(shù)組元素賦值栏笆。注意:下標為end的元素不會被賦值。[begin,end)是半開區(qū)間臊泰。
使用Arrays的sort方法對數(shù)組進行排序時,也可以設(shè)定啟始位置和終止位置蚜枢。對區(qū)間[begin,end)內(nèi)的數(shù)組進行排序缸逃,下標為end的元素不參與排序。sort方法按升序進行排序厂抽。
使用Arrays的binarySearch方法在數(shù)組中查找元素k時需频,使用的是二分法,即如果數(shù)組中間元素的值比k大時筷凤,則只從數(shù)組的前半部分元素中查找昭殉;否則只從數(shù)組的后半部分元素中查找,如此遞歸下去藐守。因此挪丢,必須要求數(shù)組元素是按升序排序好的。如果找到了元素k卢厂,則返回它的下標值乾蓬。如果有多個元素k,那么返回的結(jié)果可能是這些元素下標值的任意一個慎恒,并不一定是第k個元素的下標值任内。(平頭哥表示尼瑪撵渡,這有啥用?不解)