1. 程式人生 > >java:list集合的增刪改查

java:list集合的增刪改查

list的實現類是ArrayList;具體程式碼:

list <泛型> 集合名稱; //建立一個list集合

構造方法:

public 類名(){
類名 a1= 集合名稱.ArrayList<泛型>();

}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

/*
 * 存放備選課程類
 */
public class ListTest {

	public List courseToSelect;// 新建一個list容器,用於存放備選課程

	public ListTest() {
		this.courseToSelect = new ArrayList();//無法例項化list,但可以例項化其子類,然後傳入list集合
	}

	/*
	 * 新增與檢視
	 * 
	 */
	public void testAdd() {
		// 利用2種add方法向集合中新增元素

		// 第一種add方法,新增到集合中的最後一位
		course cr1 = new course("1", "資料結構");// 建立課程物件
		courseToSelect.add(cr1);// 呼叫add方法將課程物件傳遞進去
		/*
		 * 成功新增課程之後需要給使用者列印反饋資訊 反饋資訊需要將資訊提取出來在給列印語句呼叫
		 */
		// 用get方法將儲存資訊的物件從容器中取出,0表示下標數,物件在容器中是object型別,所以需要強制型別轉換
		
		course temp = (course) courseToSelect.get(0);// 取出指定元素,並且賦值之前進行強制型別轉換
		
		System.out.println("成功添加了課程:" + temp.id + "." + temp.name);

		// 第二種add方法
		course cr2 = new course("2", "C語言");// 建立課程物件
		courseToSelect.add(0, cr2);// 使用add方法將包含課程資訊的物件cr2加入到指定位置
		course temp2 = (course) courseToSelect.get(0);// 取出容器內指定位置的元素
		System.out.println("成功添加了課程:" + temp2.id + "." + temp2.name);
		
//		//重複新增元素,編譯器並沒報錯,說明可以重複新增。
		courseToSelect.add(0, cr1);// 使用add方法將包含課程資訊的物件cr2加入到指定位置
		course temp0 = (course) courseToSelect.get(0);// 取出容器內指定位置的元素
		System.out.println("成功添加了課程:" + temp0.id + "." + temp0.name);
		
		/*
		 * 嘗試將物件新增到不存在的元素位置
		 */

		/*
		 * course cr3 = new course("3", "eclipse");// 建立課程物件 courseToSelect.add(4,
		 * cr3);// 使用add方法將包含課程資訊的物件cr2加入到指定位置 執行出bug,bug原因:陣列下標越界
		 */

		// 2個addAll方法批量新增元素

		// 第一種addAll方法,新增整個集合進去,且只能新增list類,所以需要在新增之前將course類轉換為list類

		course[] course = { new course("3", "離散數學"), new course("4", "組合語言") };// 建立一個包含2個課程物件的陣列
		courseToSelect.addAll(Arrays.asList(course));// 將course陣列轉換為list類之後新增進去
		course temp3 = (course) courseToSelect.get(2);// 將元素取出
		course temp4 = (course) courseToSelect.get(3);// 將元素取出
		System.out.println("成功添加了兩門課程:" + temp3.id + "." + temp3.name + ";" + temp4.id + "." + temp4.name);

		// 第二種addAll方法
		course[] course2 = { new course("5", "高等數學"), new course("6", "大學英語") };
		courseToSelect.addAll(2,Arrays.asList(course2));//將course2轉為list之後新增到指定位置
		course temp5 = (course) courseToSelect.get(2);// 將元素取出
		course temp6 = (course) courseToSelect.get(3);// 將元素取出
		System.out.println("成功添加了兩門課程:" + temp5.id + "." + temp5.name + ";" + temp6.id + "." + temp6.name);
	}
	/*
	 * 檢視
	 * 取得list中的所有元素
	 * 用for迴圈歷遍
	 */
	public void testGet() {
		int size= courseToSelect.size();//獲取list集合的長度
		System.out.println("有如下課程待選:");
		for(int i=0;i<size;i++) {
			course cr = (course) courseToSelect.get(i);
			System.out.println( cr.id + "." + cr.name);
		}
	}
	/*
	 * 通過Iterator(迭代器)歷遍list
	 * 
	 */
	
	public void testTerator() {
		Iterator it=courseToSelect.iterator();//Iterator也是介面類,只能通過list呼叫其子類iterator例項化
		System.out.println("有如下課程待選(通過迭代器訪問):");
		while(it.hasNext()) {//hasNext方法判斷list內是否還有元素,則返回真值
			course cr=(course) it.next();//用Iterator帶有的next方法歷遍list元素
			System.out.println( cr.id + "." + cr.name);
		}
	}
	/*
	 * 迭代器是用來歷遍集合元素的,並不能儲存任何資料
	 */

	/*
	 * 通過for each方法訪問集合元素
	 */
	public void testForEach(){
		System.out.println("有如下課程待選(通過for each訪問):");
		for(Object obj:courseToSelect) {//定義一個Object型別變數obj,即歷遍list中的所有元素
			course er=(course)obj;//取出元素,當一個課程被存進去時是被忽略型別,取出來時需要進行型別轉換
			System.out.println( er.id + "." + er.name);
		}
	}
	/*
	 * 使用set方法修改指定元素
	 */
	public void testModify() {
		courseToSelect.set(4, new course("7","毛概"));
	}
	/*
	 * 使用remove方法刪除指定元素
	 * remove方法有兩個,一個傳入變數名,一個傳入陣列下標,這裡只做第二個示例
	 */
	public void remove() {
//		course cr=(course)courseToSelect.get(4);//取出,強制轉換型別
//		System.out.println( "我是課程:"+cr.id + "." + cr.name+"“我將被刪除”");
//		courseToSelect.remove(cr);//當傳入整形時不需要將元素提取出來就可以刪除指定元素,括號裡填寫cr時需要將元素提取出來再刪除。
//		System.out.println("刪除成功");
//		testForEach();//呼叫迭代器輸出課程
		
//		批量刪除元素
		course[] courses= {(course)courseToSelect.get(4),(course)courseToSelect.get(5)};
		
		courseToSelect.removeAll(Arrays.asList(courses));//傳入之前轉換為list陣列
		System.out.println("刪除成功");
		testForEach();
	}
	/*
	 * 使用批量刪除元素
	 */
	
	public void testType() {
		System.out.println("嘗試給list傳入其他東西");
		courseToSelect.add("給list傳入奇怪的東西");
	}
	
	// 建立main方法測試執行程式碼
	public static void main(String[] args) {
		ListTest lt = new ListTest();
		lt.testAdd();
		lt.testModify();
		lt.testForEach();
		lt.remove();
//		lt.testType();
//		lt.testGet();
//		lt.testTerator();
//		lt.testForEach();
//		lt.removeAll();
		
	}
}