Java個人學習總結——物件集合部分
阿新 • • 發佈:2018-12-15
一、有關元素遍歷時的刪除和插入
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值進行排序,注意具有一定順序的特點