1. 程式人生 > >Java個人學習總結——物件集合部分

Java個人學習總結——物件集合部分

一、有關元素遍歷時的刪除和插入

1、foreach遍歷迴圈的本質是使用iterator進行遍歷,注意集合遍歷時不要一邊遍歷一邊刪除,不能用集合的remove方法進行元素的刪除,需要直接用iterator的remove方法進行刪除,錯誤示例如下:

Iterator<String> it = books.iterator();//iterator作為遍歷集合的方法
	    while(it.hasNext())
		{
			String book = (String)it.next();
			System.out.println(book);
			//note: 如果刪除"Two book",本示例不會引發異常,請通過查詢原始碼解釋這一現象
			if (book.equals("One book"))
			{
				//使用Iterator迭代過程中,不可修改集合元素!
				books.remove(book);
			}
			//使用迭代器的方法在遍歷的過程中修改元素,不是直接刪除元素
		}

此時會丟擲異常,如果利用如下示例的方法:

		for (String book : books) {
			
			if (book.equals("Two book"))
			{
				//使用Iterator迭代過程中,不可修改集合元素!
				books.remove(book);
			}
		}

可以看出,foreach遍歷的方法本質便是呼叫iterator的remove方法,利用iterator方法時,每進行一次刪除或插入的操作,會check修改的次數,並且自動同步游標,所以不會出現游標超出集合元素的問題

注意不論是什麼集合都不能用集合的remove方法一邊遍歷一邊刪除

2、資料結構知識點總結

1、注意區別ArrayList和Arrays內部的ArrayList,後者只能遍歷和訪問,不能向其新增後者刪除元素,ArrayList時不同的資料結構

2、map中對於key必須覆蓋hashcode和equals方法

3、Navigable Map介面保證了在遍歷元素時按照升序的順序進行

4、TreeMap特點,內部基於紅黑樹進行實現,對相應的key值進行排序,注意具有一定順序的特點