在寫(xiě)程序的過(guò)程中,我們常常會(huì)碰見(jiàn)數(shù)組空間不夠用的情況,比如我已經(jīng)初始化了一個(gè)數(shù)組int []a = {1,2,3,4,5,6,7,8,9,10} ;這時(shí),我想往數(shù)組下標(biāo)3的位置插入一個(gè)元素,該怎么做?用C語(yǔ)言實(shí)現(xiàn)太難了吧,需要調(diào)用memcpy函數(shù)要一個(gè)一個(gè)偏,但是在java中就不用那么麻煩了,有種叫數(shù)組的擴(kuò)容方式,輕松實(shí)現(xiàn)。來(lái)看看代碼:
public class HelloWorld { public static void main(String[] args){ // Scanner s = new Scanner(System.in); // System.out.println("請(qǐng)輸入一個(gè)數(shù)字"); // int num = s.nextInt(); //這個(gè)數(shù)組下標(biāo)只能到9 int []a = {1,2,3,4,5,6,7,8,9,10}; //先擴(kuò)容 int []b = Getarray(a,3,100); Demoe.PrintArray(b); } //案例:有一個(gè)數(shù)組已經(jīng)初始化完畢,現(xiàn)向其下標(biāo)3插入一個(gè)元素100 public static int[] Getarray(int []a , int index , int num){ int src_array_length = a.length ; int []b = new int[src_array_length+1] ; for(int i = 0 ; i < a.length ; i++){ b[i] = a[i] ; } a = b ; //如果還想使用a,使得a指向b //接下來(lái)從最后一個(gè)元素開(kāi)始,將最后一個(gè)元素的前面一個(gè)元素拷貝到最后一個(gè) //以此類(lèi)推 for(int i = a.length - 1 ; i > index ; i--){ a[i] = a[i-1]; } //別忘了,將要插入的元素插入到對(duì)應(yīng)的數(shù)組坐標(biāo) a[index] = num ; return a ; } }