List

兩種類型的List:

ArrayList:它長於隨機訪問元素,但是在List的中間插入和移除元素時比較慢。

|-用contains()方法來確定對象是否在列表中。

|-若移除一個對象,則可以將這個對象的引用傳遞給remove()方法。

|-indexOf()方法返回查詢對象在List中的位置(從零開始),不存在的話返回-1。

|-subList()方法允許你很容易的從較大的列表中創建出一個片段,其中兩個參數start,end,截取的是從start到end-1。

|-retainAll()方法是一個有效地交集操作

LinkedList:它通過較低的代價在List中間進行插入和刪除的操作,提供優化的順序訪問,LinkedList在隨機訪問上相對較慢。

他在執行某些操作時比ArrayList更高效,但是在隨機訪問對象是就要比ArrayList遜色一些。

|-getFirst(),element()完全一樣,返回列表的頭(第一個元素),但是並不移除。如果List爲空,則拋出NoSuchElementException。peek()方法與上述兩個方法的唯一差異就是List爲空時返回null。

|-removeFirst()和remove()也是完全一樣,他們移除並返回列表的頭,如果List爲空則返回NoSuchElementException。poll()稍有差異,當列表爲空時返回null。

|-addFirst(),add()和addLast()相同,他們都將某個元素插入到列表的尾部。

|-removeLast()移除並返回列表的最後一個元素。

迭代器:

|-使用方法Iterator()要求容器返回一個Iterator。Iterator將準備好返回序列的第一個元素。

|-使用next()獲得序列的下一個元素。

|-使用hasNext()檢查序列中是否還有元素。

|-使用remove()將迭代器新近返回的元素刪除。

有了Iterator就不必爲容器中的元素的數量操心了,那是由hasNext()和next()關心的事情。

如果你只是向前遍歷List,並不打算修改list本身,那麼使用foreach()語法會變得更加簡潔。

Iterator還可以移除由next()產生的最後一個元素,這意味着在調用remove()之前必須先調用next()。

 

注意:其實迭代器最大的好處並不是用來訪問容器中的對象(因爲for和foreach會做的更好,更簡單),其最大的好處是用來統一對容器的訪問方式。(因爲所有容器都可以通過iterator()方法的到迭代對象。)

ListIterator

她是一個更加強大的Iterator的子類型,她只能用於各種List的訪問,儘管Iterator只能先前移動,但是ListIterator可以雙向移動。

|-創建listIterator對象:ListIterator it= pets.listIterator() ;

|-得到當前位置的前一個和後一個的索引:it.nextIndex(),it.previousIndex()。得到引用:it.next(),it.previous()(也可以在.id()得到索引)

|-可以使用set()方法替換它訪問過的最後一個元素:it.next(),it.set(***)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章