1. 程式人生 > >java集合學習筆記

java集合學習筆記

必須 tor contain efi 列表 entry blob 鍵值 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的定義是不同的,使用時需註意。

  1. ArrayList 適於隨機訪問,但插入和刪除元素較慢

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