1. 程式人生 > >陣列和集合的區別聯絡

陣列和集合的區別聯絡

目錄

3、待續

陣列和集合的區別

1、陣列的容量是固定的。集合不是

1.1 陣列有關:

陣列建立必須初始化,不然無法使用。

陣列沒有add方法。

建立陣列的幾種方式:

輸出測試:

public class ArrayTestClass {
	static String[] 
			fs1 = new String[16],
			fs2 = new String[] { "a", "b" },
			fs3 = { "c", "d" };
	public static void main(String[] args) {
		fs1[1]="123";
		System.err.println(fs1[1]);
		System.err.println(fs2[1]);
		System.err.println(fs3[1]);
	}
}

輸出:

123
b
d

1.2 陣列的擴充套件

越界 - 建立新陣列 - 拷貝舊陣列到新陣列 - 指向新陣列

package test;

public class ArrayTestClass {
	public static void main(String[] args) {
		// new 一個16位的陣列
		String[] fs1 = new String[16];
		// 迴圈輸出32個數字字元
		for (int i = 0; i < 32; i++) {
			// 檢測越界後的陣列
			fs1 = addArr(fs1, i);
			fs1[i] = "" + i;
			System.err.println(fs1[i]);
		}
	}

	/**
	 * 檢測是否越界
	 */
	public static String[] addArr(String[] cs, int i) {
		// 下標越界
		if (i >= cs.length) {
			// new 一個新陣列,長度為原陣列長度的3/2 第一次處理後的長度為24,需要輸出32個,所以會進入兩次
			String[] newArr = new String[cs.length + cs.length / 2];
			// 拷貝原陣列到新陣列。引數為:(原陣列, 原陣列的開始位置, 目標陣列, 目標陣列的開始位置, 拷貝個數)
			System.arraycopy(cs, 0, newArr, 0, cs.length);
			// 把原陣列替換為新陣列
			cs = newArr;
		}
		return cs;
	}

}

2、集合可以不指定型別。陣列不能

2.1、集合相關

待續

3、ArrayList基於陣列建立

4、待續