java集合學習筆記
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集合學習筆記