優(yōu)點:可以通過索引值訪問任何的數(shù)組元素, 可以實現(xiàn)隨機(jī)的訪問。
缺點:插入/刪除元素時, 需要擴(kuò)容, 復(fù)制或者移動大量的元素, 效率比較低。
應(yīng)用場景:適用于以查詢訪問為主, 很少進(jìn)行插入/刪除操作的情況。
package com.wkcto.chapter03.demo01;
import java.util.Arrays;
/**
* 在數(shù)組中插入元素
* @author 蛙課網(wǎng)
*
*/
public class Test07 {
public static void main(String[] args) {
int [] data = {1,2,3,4,5,6,7};
//在data數(shù)組,索引值為3的位置插入元素666
data = insert( data, 3 , 666);
System.out.println( Arrays.toString(data)); //[1,2,3,666,4,5,6,7]
}
//定義方法, 在數(shù)組的指定i位置添加一個元素key
public static int[] insert( int [] myArray, int i, int key) {
//1)定義更大的數(shù)組
int[] newData = new int[myArray.length+1];
//2) 把[0,i)范圍的元素復(fù)制到新的數(shù)組中
for(int j = 0 ; j < i ; j++){
newData[j] = myArray[j];
}
//3) 把key元素存儲到新數(shù)組的i位置
newData[i] = key;
//4) 把原數(shù)組[i,lenth)范圍的元素復(fù)制到新的數(shù)組的[i+1, length+1)
for( int j = i ; j<myArray.length; j++){
newData[j+1] = myArray[j];
}
// //5) 讓原來的數(shù)組名指向新的數(shù)組
// myArray = newData;
// System.out.println( Arrays.toString(myArray));
//5)返回新的數(shù)組
return newData;
}
}
//定義方法,刪除數(shù)組指定位置的元素, 把myArray[i]元素刪除
public static int[] delete(int [] myArray, int i) {
//1)定義更少的數(shù)組
int [] newData = new int[myArray.length-1];
//2) 把[0,i)范圍 元素復(fù)制到新數(shù)組中
System.arraycopy(myArray, 0, newData, 0, i);
//3) 把[i+1, length)范圍的元素復(fù)制到新數(shù)組[i,lenth-1)
for( int j = i+1; j < myArray.length; j++){
newData[j-1] = myArray[j];
}
//4) 返回新的數(shù)組
return newData;
}