標籤:對象 ash offer 學習筆記 boolean png space 重複 迭代
集合容器結構圖:
java容器類類庫的用途是儲存對象,分為兩個概念,collection和map。collection儲存單一的元素,而map儲存相關聯的索引值對。
collection 中基本方法:
int size():擷取集合的元素個數
boolean add(E e):向集合中添加元素
boolean remove(Object o):刪除給定的元素
boolean isEmpty():判斷集合是否不含有元素
void clear():清除集合中所有元素
boolean contains(Object o):集合中是否含有給定元素
boolean addAll(Collection c):將給定集合中的所有元素添加到當前集合
boolean removeAll(Collection c)刪除當前集合中與給定集合相同的元素
List list介面在collection的基礎上添加了大量的方法,使得可以在list的中間插入和移除元素。
boolean add(int index, E element)
boolean addAll(index, collection)
boolean remove(int index)
set(int index, E element)
get( int index)
subList(int fromIndex, int toIndex)
indexof()
lastIndexof()
listIterator()
當使用contains,indexof,remove時,都會用到equals()方法,對於不同的類,equals的定義是不同的,使用時需注意。
ArrayList 適於隨機訪問,但插入和刪除元素較慢
LinkedList 低價的插入和刪除,提供了最佳化的順序訪問,但在隨機訪問方面較慢。
除了實現基本的list介面外,還添加了可以使其用作棧,隊列,或雙端隊列的方法,這些方法有的只是名字有差別,有的差別不大,只是為了在特定上下文中更適用。如Queue介面窄化了對LinkedList的方法的存取權限,在方法中的參數類型如果是Queue時,就只能訪問Queue介面所定義的方法,而不能直接存取 LinkedList的非Queue的方法。
getFirst()
element()
peek()
都是返回列表的第一個元素,當列表為空白時,getFirst和element拋出異常,而peek返回null。
remove()
removeFirst()
poll()
移除並返回列表的頭,當列表為空白時,getFirst和element拋出異常,而peek返回null。
addFirst()
add()
addLast()
offer()
將元素插入到列表的尾端
removeLast()
移除並返回列表最後一個元素
stack 棧:可以直接將LinkedList當做棧使用,而不是使用已經過時的stack
LinkedList<T> stack = new LinkedList<T>()
Queue 隊列:LinkedList實現了Queue介面,所以通過LinkedList向上轉型為Queue實現
Queue<T> queue = new LinkedList<T>()
set 不儲存重複的元素,與collection是完全一樣的介面。
treeset將元素儲存在紅/黑樹狀結構結構中
hashset使用的是散列函數
Map
put()
get()
keySet()返回它的鍵的set
values()返回它的值的collection
entrySet()返回它的索引值對的set
Iterator 迭代器
迭代器的作用是遍曆並選擇序列中的對象,而用戶端程式員不必知道該序列的底層結構。
collections.iterator()得到一個迭代器
iterator.hasNext()
iterator.next()
iterator.remove()在調用此方法之前必須先調用next方法,表示移除最後一個元素。
ListIterator 是Iterator的一個子類,只能用於List類的訪問,可以雙向移動。
list.listIterator()得到一個迭代器
iterator.hasNext()
iterator.next()
iterator.hasPrevious()
iterator.previous()
iterator.remove()
iterator.set()替換訪問過的最後一個元素
iterator.nextIndex()返回迭代器在列表中指向的當前位置的後一個元素的索引
iterator.previous()返回迭代器在列表中指向的當前位置的前一個元素的索引
java集合學習筆記