摘要:如果此對(duì)其迭代器返回的元素順序做出了某些保證,那么此方法必須以相同的順序返回這些元素。返回如果迭代器仍具有多個(gè)元素,則返回。方法功能從迭代器指向的中移除迭代器返回的最后一個(gè)元素可選操作。
一、集合類(lèi) 1. 概述
Java是一門(mén)面向?qū)ο蟮恼Z(yǔ)言,就免不了處理對(duì)象
為了方便操作多個(gè)對(duì)象,那么我們就得把這多個(gè)對(duì)象存儲(chǔ)起來(lái)
想要存儲(chǔ)多個(gè)對(duì)象(變量),很容易就能想到一個(gè)容器
常用的容器我們知道有StringBuffered,數(shù)組(雖然有對(duì)象數(shù)組,但是數(shù)組的長(zhǎng)度是不可變的)
所以,Java就為我們提供了集合(Collection)
2. 集合和數(shù)組的區(qū)別數(shù)組的長(zhǎng)度是固定的
集合的長(zhǎng)度是可變的
數(shù)組可以存儲(chǔ)基本數(shù)據(jù)類(lèi)型,也可以存儲(chǔ)引用數(shù)據(jù)類(lèi)型
集合只能存儲(chǔ)引用數(shù)據(jù)類(lèi)型,存儲(chǔ)基本數(shù)據(jù)類(lèi)型會(huì)自動(dòng)裝箱
數(shù)組里面只能存儲(chǔ)同一數(shù)據(jù)類(lèi)型的數(shù)據(jù)
集合可以存儲(chǔ)不同數(shù)據(jù)類(lèi)型的數(shù)據(jù)
public interface Collection2. Collection接口的概述extends Iterable
Collection是層次結(jié)構(gòu)的根接口。
Collection是單列集合。
Collection表示一組對(duì)象,這些對(duì)象也稱(chēng)為collection的元素。
一些collection允許有重復(fù)的元素,而另一些則不允許。
一些collection是有序的,而另一些則是無(wú)序的。
JDK不提供此接口的任何直接實(shí)現(xiàn),但是它提供更具體的子接口,如Set和List等等。
3. Collection接口的體系圖 4. Collection接口的成員方法 4.01 add(E e)方法: * boolean add(E e) 簡(jiǎn)述: * 添加一個(gè)元素。 功能: * 確保此collection包含指定的元素(可選操作)。 * 如果此collection由于調(diào)用而發(fā)生更改,則返回true。 如果此collection不允許有重復(fù)元素,并且已經(jīng)包含了指定的元素,則返回false。 * 支持此操作的collection可以限制哪些元素能添加到此collection中來(lái)。 需要特別指出的是,一些collection拒絕添加null元素,其他一些collection將對(duì)可以添加的元素類(lèi)型強(qiáng)加限制。Collection類(lèi)在其文檔中清楚地指定了其添加元素方面的限制。 * 如果collection由于某些原因(已經(jīng)包含該元素的原因除外)拒絕添加特定的元素,那么它必須拋出一個(gè)異常而不是返回false。這確保了在此調(diào)用返回后,collection總是包含指定的元素。 參數(shù): * e-確定此collection中是否存在的元素。 返回: * 如果此collection由于調(diào)用而發(fā)生更改,則返回true 拋出: * UnsupportedOperationException-如果此collection不支持add操作 * ClassCastException-如果指定元素的類(lèi)不允許它添加到此collection中 * NullPointerException-如果指定的元素為null,并且此collection不允許null元素 * IllegalArgumentException-如果元素的某屬性不允許它添加到此collection中 * IllegalStateException-如果由于插入限制,元素不能在此時(shí)間添加4.02 addAll(Collection extends E> c)
方法: * boolean addAll(Collection extends E> c) 簡(jiǎn)述: * 添加一個(gè)集合的元素 功能: * 將指定collection中的所有元素都添加到此collection中(可選操作)。 * 如果在進(jìn)行此操作的同時(shí)修改指定的collection,那么此操作行為是不確定的。 這意味著如果指定的collection是此collection,并且此collection為非空,那么此調(diào)用的行為是不確定的 參數(shù): * c-包含要添加到此collection的collection 返回: * 如果此collection由于調(diào)用而發(fā)生更改,則返回true 拋出: * UnsupportedOperationException-如果此collection不支持addAll方法 * ClassCastException-如果指定collection中某個(gè)元素的類(lèi)不允許它添加到此collection中 * NullPointerException-如果指定collection包含null元素, 并且此collection不支持null元素,或者指定的collection為null * IllegalArgumentException-如果指定collection的元素的某屬性不允許它添加到此collection中 * IllegalStateException-如果由于插入限制,不是所有的元素都能在此時(shí)間添加4.03 clear()
方法: * void clear() 簡(jiǎn)述: * 移除所有元素 功能: * 移除此collection中的所有元素(可選操作)。 * 此方法無(wú)返回,但可拋出一個(gè)異常。 拋出: * UnsupportedOperationException-如果此collection不支持clear操作4.04 contains(Object o)
方法: * boolean contains(Object o) 簡(jiǎn)述: * 判斷集合是否包含該元素 功能: * 如果此collection包含指定的元素,則返回true。 * 即當(dāng)且僅當(dāng)此collection至少包含一個(gè)滿(mǎn)足(o==null ? e==null : o.equals(e))的元素e時(shí)才返回true * 底層使用的是equals方法,需要看情況重寫(xiě)equals方法。 參數(shù): * o-測(cè)試在此collection中是否存在的元素。 返回: * 如果此collection包含指定的元素,則返回true 拋出: * ClassCastException-如果指定元素的類(lèi)型與此collection不兼容(可選)。 * NullPointerException-如果指定的元素為null,并且此collection不允許null元素(可選)。4.05 containsAll(Collection> c)
方法: * boolean containsAll(Collection> c) 簡(jiǎn)述: * 判斷集合中是否包含指定的集合元素,只有包含所有的元素,才叫包含 功能: * 如果此collection包含指定collection中的所有元素,則返回true。 參數(shù): * c-將檢查是否包含在此collection中的collection 返回: * 如果此collection包含指定collection中的所有元素,則返回true。 拋出: * ClassCastException-如果指定collection中有一個(gè)或多個(gè)元素的類(lèi)型與此collection不兼容(可選) * NullPointerException-如果指定collection包含一個(gè)或多個(gè)null元素,并且此collection不允許null 元素(可選),或者指定的collection為null。4.06 equals(Object o)
方法: * boolean equals(Object o) 功能: * 比較此collection與指定對(duì)象是否相等。 覆蓋: * 類(lèi)Object中的equals() 參數(shù): * o-要與此collection進(jìn)行相等性比較的對(duì)象。 返回: * 如果指定對(duì)象與此collection相等,則返回true。4.07 hashCode()
方法: * int hashCode() 功能: * 返回此collection的哈希碼值。 覆蓋: * 類(lèi)Object中的hashCode() 返回: * 此collection的哈希碼值。4.08 isEmpty()
方法: * boolean isEmpty() 功能: * 如果此collection不包含元素,則返回true。 返回: * 如果此collection不包含元素,則返回true4.09 iterator()
方法: * Iterator4.10 remove(Object o)iterator() 功能: * 返回在此collection的元素上進(jìn)行迭代的迭代器。 * 關(guān)于元素返回的順序沒(méi)有任何保證(除非此collection是某個(gè)能提供保證順序的類(lèi)實(shí)例)。 來(lái)源: * 接口Iterable 中的iterator方法。 返回: * 在此collection的元素上進(jìn)行迭代的Iterator
方法: * boolean remove(Object o) 功能: * 從此collection中移除指定元素的單個(gè)實(shí)例,如果存在的話(huà)(可選操作),即移除一個(gè)元素。 * 即如果此collection包含一個(gè)或多個(gè)滿(mǎn)足(o==null ? e==null : o.equals(e))的元素e, 則移除這樣的元素。 * 如果此collection包含指定的元素(或者此collection由于調(diào)用而發(fā)生更改),則返回true。 * 底層使用的是equals方法,需要看情況重寫(xiě)equals方法。 參數(shù): * o-要從此 collection中移除的元素(如果存在)。 返回: * 如果此調(diào)用將移除一個(gè)元素,則返回true 拋出: * ClassCastException-如果指定元素的類(lèi)型與此collection不兼容(可選) * NullPointerException-如果指定的元素為null,并且此collection不允許null元素(可選)。 * UnsupportedOperationException-如果此collection不支持remove操作4.11 removeAll(Collection> c)
方法: * boolean removeAll(Collection> c) 簡(jiǎn)述: * 即移除一個(gè)集合的元素,只要有一個(gè)元素移除了,就返回true 功能: * 移除此collection中那些也包含在指定collection中的所有元素(可選操作) 此調(diào)用返回后,collection中將不包含任何與指定collection相同的元素。 參數(shù): * c-要從此collection移除的元素的collection 返回: * 如果此collection由于調(diào)用而發(fā)生更改,則返回true 拋出: * UnsupportedOperationException-如果此collection不支持removeAll方法 * ClassCastException-如果此collection中一個(gè)或多個(gè)元素的類(lèi)型與指定collection不兼容(可選) * NullPointerException-如果此collection包含一個(gè)或多個(gè)null元素,并且指定的collection不支持null元素(可選),或者指定的collection為null4.12 retainAll(Collection> c)
方法: * boolean retainAll(Collection> c) 簡(jiǎn)述 * 移除此collection中未包含在指定collection中的所有元素,集合A和集合B做交集,最終的結(jié)果保存在集合A,返回值表示的是A是否發(fā)生過(guò)變化。 功能: * 僅保留此collection中那些也包含在指定collection的元素(可選操作) 即移除此collection中未包含在指定collection中的所有元素。 參數(shù): * c-包含保留在此 collection 中的元素的 collection 返回: * 如果此 collection 由于調(diào)用而發(fā)生更改,則返回 true 拋出: * UnsupportedOperationException-如果此collection不支持 retainAll 操作 * ClassCastException-如果此collection 中一個(gè)或多個(gè)元素的類(lèi)型與指定 collection 不兼容(可選) * NullPointerException-如果此collection包含一個(gè)或多個(gè)null元素,并且指定的collection不允許null元素(可選),或者指定的collection為null4.13 size()
方法: * int size() 功能: * 返回此collection中的元素?cái)?shù)。 * 如果此collection包含的元素大于Integer.MAX_VALUE,則返回Integer.MAX_VALUE。 返回: * 此collection中的元素?cái)?shù)。4.14 toArray()
方法: * Object[] toArray() 功能: * 返回包含此collection中所有元素的數(shù)組。 * 如果collection對(duì)其迭代器返回的元素順序做出了某些保證,那么此方法必須以相同的順序返回這些元素。 * 返回的數(shù)組將是“安全的”,因?yàn)榇薱ollection并不維護(hù)對(duì)返回?cái)?shù)組的任何引用。 換句話(huà)說(shuō),即使 collection 受到數(shù)組的支持,此方法也必須分配一個(gè)新的數(shù)組。 因此,調(diào)用者可以隨意修改返回的數(shù)組。 * 此方法充當(dāng)了基于數(shù)組的 API 與基于 collection 的 API 之間的橋梁。 返回: * 包含此 collection 中所有元素的數(shù)組4.15 toArray(T[] a)
方法: *三、Iterator接口 1. Iterator接口的全稱(chēng)T[] toArray(T[] a) 功能: * 返回包含此collection中所有元素的數(shù)組。 * 返回?cái)?shù)組的運(yùn)行時(shí)類(lèi)型與指定數(shù)組的運(yùn)行時(shí)類(lèi)型相同。 * 如果指定的數(shù)組能容納該collection,則返回包含此collection元素的數(shù)組。否則,將分配一個(gè)具有指定數(shù)組的運(yùn)行時(shí)類(lèi)型和此collection大小的新數(shù)組。 * 如果指定的數(shù)組能容納collection,并有剩余空間(即數(shù)組的元素比collection的元素多),那么會(huì)將數(shù)組中緊接collection尾部的元素設(shè)置為null。(調(diào)用者只有在知道此collection沒(méi)有包含任何null元素時(shí)才能用此方法確定collection的長(zhǎng)度。) * 如果此collection對(duì)其迭代器返回的元素順序做出了某些保證,那么此方法必須以相同的順序返回這些元素。 * 像toArray()方法一樣,此方法充當(dāng)基于數(shù)組的API與基于collection的API之間的橋梁。更進(jìn)一步說(shuō),此方法允許對(duì)輸出數(shù)組的運(yùn)行時(shí)類(lèi)型進(jìn)行精確控制,并且在某些情況下,可以用來(lái)節(jié)省分配開(kāi)銷(xiāo)。 * 假定x是只包含字符串的一個(gè)已知collection。 以下代碼用來(lái)將collection轉(zhuǎn)儲(chǔ)到一個(gè)新分配的String數(shù)組: String[] y = x.toArray(new String[0]); 注意,toArray(new Object[0])和toArray()在功能上是相同的。 參數(shù): * a-存儲(chǔ)此collection元素的數(shù)組(如果其足夠大);否則,將為此分配一個(gè)具有相同運(yùn)行時(shí)類(lèi)型的新數(shù)組。 返回: * 包含此 collection 中所有元素的數(shù)組 拋出: * ArrayStoreException-如果指定數(shù)組的運(yùn)行時(shí)類(lèi)型不是此collection每個(gè)元素運(yùn)行時(shí)類(lèi)型的超類(lèi)型 * NullPointerException-如果指定的數(shù)組為null
public interface Iterator2. Iterator接口的概述
對(duì)collection進(jìn)行迭代的迭代器
依賴(lài)于集合而存在
具體實(shí)現(xiàn)是以?xún)?nèi)部類(lèi)的方式實(shí)現(xiàn)的
3. Iterator接口的成員方法 3.01 hasNext()方法: * boolean hasNext() 功能: * 如果仍有元素可以迭代,則返回true。 換句話(huà)說(shuō),如果next返回了元素而不是拋出異常,則返回true。 返回: * 如果迭代器仍具有多個(gè)元素,則返回true。3.02 next()
方法: * E next() 功能: * 返回迭代的下一個(gè)元素。 返回: * 迭代的下一個(gè)元素。 拋出: * NoSuchElementException-沒(méi)有元素可以迭代。3.03 remove()
方法: * void remove() 功能: * 從迭代器指向的collection中移除迭代器返回的最后一個(gè)元素(可選操作)。 * 每次調(diào)用next只能調(diào)用一次此方法。 * 如果進(jìn)行迭代時(shí)用調(diào)用此方法之外的其他方式修改了該迭代器所指向的collection,則迭代器的行為是不確定的 拋出: * UnsupportedOperationException-如果迭代器不支持remove操作。 * IllegalStateException-如果尚未調(diào)用next方法,或者在上一次調(diào)用next方法之后已經(jīng)調(diào)用了remove方法四、List接口 1. List接口的全稱(chēng)
public interface List2. List接口的概述extends Collection
有序的collection(也稱(chēng)為序列)。
此接口的用戶(hù)可以對(duì)列表中每個(gè)元素的插入位置進(jìn)行精確地控制。
用戶(hù)可以根據(jù)元素的整數(shù)索引(在列表中的位置)訪問(wèn)元素,并搜索列表中的元素。
與set不同,列表通常允許重復(fù)的元素
3. List接口的成員方法 3.01 add(int index,E element)void add(int index,E element)在列表的指定位置插入指定元素(可選操作)。將當(dāng)前處于該位置的元素(如果有的話(huà))和所有后續(xù)元素向右移動(dòng)(在其索引中加 1)。 參數(shù): index - 要在其中插入指定元素處的索引 element - 要插入的元素 拋出: UnsupportedOperationException - 如果列表不支持 add 操作 ClassCastException - 如果指定元素的類(lèi)不允許它添加到此列表 NullPointerException - 如果指定的元素為 null,并且此列表不允許 null 元素 IllegalArgumentException - 如果指定元素的某些屬性不允許它添加到此列表 IndexOutOfBoundsException - 如果索引超出范圍 (index < 0 || index > size())3.02 addAll(Collection extends E> c)
boolean addAll(Collection extends E> c)添加指定 collection 中的所有元素到此列表的結(jié)尾,順序是指定 collection 的迭代器返回這些元素的順序(可選操作)。如果在操作正在進(jìn)行中修改了指定的 collection,那么此操作的行為是不確定的(注意,如果指定的 collection 是此列表,并且它是非空的,則會(huì)發(fā)生這種情況。) 指定者: 接口 Collection3.03 addAll(int index,Collection extends E> c)中的 addAll 參數(shù): c - 包含要添加到此列表的元素的 collection 返回: 如果此列表由于調(diào)用而發(fā)生更改,則返回 true 拋出: UnsupportedOperationException - 如果列表不支持 addAll 操作 ClassCastException - 如果指定 collection 的元素的類(lèi)不允許它添加到此列表 NullPointerException - 如果指定的 collection 包含一個(gè)或多個(gè) null 元素,并且該列表不允許 null 元素,或者指定的 collection 為 null IllegalArgumentException - 如果指定 collection 的元素的某些屬性不允許它添加此列表
方法: * boolean addAll(int index,Collection extends E> c) 功能: * 將指定collection中的所有元素都插入到列表中的指定位置(可選操作)。 * 過(guò)程為:將當(dāng)前處于該位置的元素(如果有的話(huà))和所有后續(xù)元素向右移動(dòng)(增加其索引)。 * 新元素將按照它們通過(guò)指定collection的迭代器所返回的順序出現(xiàn)在此列表中。 * 如果在操作正在進(jìn)行中修改了指定的collection,那么該操作的行為是不確定的 注意,如果指定的collection是此列表,并且它是非空的,則會(huì)發(fā)生這種情況。 參數(shù): * index-將指定collection的第一個(gè)元素所插入位置的索引 * c-包含要添加到此列表的元素的 collection 返回: * 如果此列表由于調(diào)用而發(fā)生更改,則返回true 拋出: * UnsupportedOperationException-如果列表不支持addAll操作 * ClassCastException-如果指定collection中某個(gè)元素的類(lèi)不允許它添加到此列表 * NullPointerException-如果指定的collection包含一個(gè)或多個(gè)null元素,并且該列表不允許null元素,或者指定的collection為null * IllegalArgumentException-如果指定 collection 的元素的某些屬性不允許它添加到此列表 * IndexOutOfBoundsException-如果索引超出范圍 (index < 0 || index > size())3.04 remove(int index)
E remove(int index)移除列表中指定位置的元素(可選操作)。將所有的后續(xù)元素向左移動(dòng)(將其索引減 1)。返回從列表中移除的元素。 參數(shù): index - 要移除的元素的索引 返回: 以前在指定位置的元素 拋出: UnsupportedOperationException - 如果列表不支持 remove 操作 IndexOutOfBoundsException - 如果索引超出范圍 (index < 0 || index >= size())3.05 remove(Object o)
方法: * boolean remove(Object o) 功能: * 從此列表中移除第一次出現(xiàn)的指定元素(如果存在)(可選操作)。 * 如果列表不包含元素,則不更改列表。 * 即移除滿(mǎn)足(o==null ? get(i)==null : o.equals(get(i)))的最低索引i的元素 (如果存在這樣的元素)。 * 如果此列表已包含指定元素(或者此列表由于調(diào)用而發(fā)生更改),則返回true。 指定者: * Collection3.06 set(int index,E element)接口中的remove方法。 參數(shù): * o 要從該列表中移除的元素,如果存在的話(huà) 返回: * 如果列表包含指定的元素,則返回true 拋出: * ClassCastException-如果指定元素的類(lèi)型和此列表不兼容(可選) * NullPointerException-如果指定的元素是null,并且此列表不允許null元素(可選) * UnsupportedOperationException-如果列表不支持remove 操作
E set(int index, E element)用指定元素替換列表中指定位置的元素(可選操作)。 參數(shù): index - 要替換的元素的索引 element - 要在指定位置存儲(chǔ)的元素 返回: 以前在指定位置的元素 拋出: UnsupportedOperationException - 如果列表不支持 set 操作 ClassCastException - 如果指定元素的類(lèi)不允許它添加到此列表 NullPointerException - 如果指定的元素為 null,并且此列表不允許 null 元素 IllegalArgumentException - 如果指定元素的某些屬性不允許它添加到此列表 IndexOutOfBoundsException - 如果索引超出范圍 (index < 0 || index >= size())3.07 get(int index)
E get(int index)返回列表中指定位置的元素。 參數(shù): index - 要返回的元素的索引 返回: 列表中指定位置的元素 拋出: IndexOutOfBoundsException - 如果索引超出范圍 (index < 0 || index >= size())3.08 indexOf(Object o)
int indexOf(Object o)返回此列表中第一次出現(xiàn)的指定元素的索引;如果此列表不包含該元素,則返回 -1。更確切地講,返回滿(mǎn)足 (o==null ? get(i)==null : o.equals(get(i))) 的最低索引 i;如果沒(méi)有這樣的索引,則返回 -1。 參數(shù): o - 要搜索的元素 返回: 此列表中第一次出現(xiàn)的指定元素的索引,如果列表不包含該元素,則返回 -1 拋出: ClassCastException - 如果指定元素的類(lèi)型和此列表不兼容(可選) NullPointerException - 如果指定的元素是 null,并且此列表不允許 null 元素(可選)3.09 lastIndexOf(Object o)
int lastIndexOf(Object o)返回此列表中最后出現(xiàn)的指定元素的索引;如果列表不包含此元素,則返回 -1。更確切地講,返回滿(mǎn)足 (o==null ? get(i)==null : o.equals(get(i))) 的最高索引 i;如果沒(méi)有這樣的索引,則返回 -1。 參數(shù): o - 要搜索的元素 返回: 列表中最后出現(xiàn)的指定元素的索引;如果列表不包含此元素,則返回 -1 拋出: ClassCastException - 如果指定元素的類(lèi)型和此列表不兼容(可選) NullPointerException - 如果指定的元素是 null,并且此列表不允許 null 元素(可選)3.10 subList(int fromIndex,int toIndex)
List3.11 listIterator()subList(int fromIndex, int toIndex)返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之間的部分視圖。(如果 fromIndex 和 toIndex 相等,則返回的列表為空)。返回的列表由此列表支持,因此返回列表中的非結(jié)構(gòu)性更改將反映在此列表中,反之亦然。返回的列表支持此列表支持的所有可選列表操作。 此方法省去了顯式范圍操作(此操作通常針對(duì)數(shù)組存在)。通過(guò)傳遞 subList 視圖而非整個(gè)列表,期望列表的任何操作可用作范圍操作。例如,下面的語(yǔ)句從列表中移除了元素的范圍: list.subList(from, to).clear(); 可以對(duì) indexOf 和 lastIndexOf 構(gòu)造類(lèi)似的語(yǔ)句,而且 Collections 類(lèi)中的所有算法都可以應(yīng)用于 subList。 如果支持列表(即此列表)通過(guò)任何其他方式(而不是通過(guò)返回的列表)從結(jié)構(gòu)上修改,則此方法返回的列表語(yǔ)義將變?yōu)槲炊x(從結(jié)構(gòu)上修改是指更改列表的大小,或者以其他方式打亂列表,使正在進(jìn)行的迭代產(chǎn)生錯(cuò)誤的結(jié)果)。 參數(shù): fromIndex - subList 的低端(包括) toIndex - subList 的高端(不包括) 返回: 列表中指定范圍的視圖 拋出: IndexOutOfBoundsException - 非法的端點(diǎn)值 (fromIndex < 0 || toIndex > size || fromIndex > toIndex)
ListIterator3.12 listIterator(int index)listIterator()返回此列表元素的列表迭代器(按適當(dāng)順序)。 返回: 此列表元素的列表迭代器(按適當(dāng)順序)
ListIterator五、ListIterator接口 1. ListIterator接口的全稱(chēng)listIterator(int index)返回列表中元素的列表迭代器(按適當(dāng)順序),從列表的指定位置開(kāi)始。指定的索引表示 next 的初始調(diào)用所返回的第一個(gè)元素。previous 方法的初始調(diào)用將返回索引比指定索引少 1 的元素。 參數(shù): index - 從列表迭代器返回的第一個(gè)元素的索引(通過(guò)調(diào)用 next 方法) 返回: 此列表中元素的列表迭代器(按適當(dāng)順序),從列表中的指定位置開(kāi)始 拋出: IndexOutOfBoundsException - 如果索引超出范圍 (index < 0 || index > size())
public interface ListIterator2. ListIterator接口的概述extends Iterator
繼承了Iterator接口,是List特有的Iterator接口,擁有獨(dú)特的成員方法。
List專(zhuān)有的迭代器,允許程序員按任一方向遍歷列表、迭代期間修改列表,并獲得迭代器在列表中的當(dāng)前位置——避免ConcurrentModificationException-并發(fā)修改異常。
3. ListIterator接口的成員方法 3.01 add(E e)void add(E e)將指定的元素插入列表(可選操作)。該元素直接插入到 next 返回的下一個(gè)元素的前面(如果有),或者 previous 返回的下一個(gè)元素之后(如果有);如果列表沒(méi)有元素,那么新元素就成為列表中的唯一元素。新元素被插入到隱式光標(biāo)前:不影響對(duì) next 的后續(xù)調(diào)用,并且對(duì) previous 的后續(xù)調(diào)用會(huì)返回此新元素(此調(diào)用把調(diào)用 nextIndex 或 previousIndex 所返回的值增加 1)。 參數(shù): e - 要插入的元素。 拋出: UnsupportedOperationException - 如果列表迭代器不支持 add 操作。 ClassCastException - 如果指定元素的類(lèi)不允許該元素添加到此列表。 IllegalArgumentException - 如果此元素的某個(gè)方面不允許該元素添加到此列表。3.02 hasNext()
boolean hasNext()以正向遍歷列表時(shí),如果列表迭代器有多個(gè)元素,則返回 true(換句話(huà)說(shuō),如果 next 返回一個(gè)元素而不是拋出異常,則返回 true)。 指定者: 接口 Iterator3.03 hasPrevious()中的 hasNext 返回: 如果以正向遍歷列表,列表迭代器有多個(gè)元素,則返回 true。
boolean hasPrevious()如果以逆向遍歷列表,列表迭代器有多個(gè)元素,則返回 true。(換句話(huà)說(shuō),如果 previous 返回一個(gè)元素而不是拋出異常,則返回 true)。 返回: 如果以逆向遍歷列表,列表迭代器有多個(gè)元素,則返回 true。3.04 next()
E next()返回列表中的下一個(gè)元素??梢灾貜?fù)調(diào)用此方法來(lái)迭代此列表,或混合調(diào)用 previous 來(lái)前后移動(dòng)(注意交替調(diào)用 next 和 previous 將重復(fù)返回相同的元素)。 指定者: 接口 Iterator3.05 nextIndex()中的 next 返回: 列表中的下一個(gè)元素。 拋出: NoSuchElementException - 如果沒(méi)有可迭代的下一個(gè)元素。
int nextIndex()返回對(duì) next 的后續(xù)調(diào)用所返回元素的索引。(如果列表迭代器在列表的結(jié)尾,則返回列表的大?。?。 返回: 對(duì) next 的后續(xù)調(diào)用所返回元素的索引,如果列表迭代器在列表的結(jié)尾,則返回列表大小。3.06 previous()
E previous()返回列表中的前一個(gè)元素??梢灾貜?fù)調(diào)用此方法來(lái)迭代列表,或混合調(diào)用 next 來(lái)前后移動(dòng)(注意交替調(diào)用 next 和 previous 將重復(fù)返回相同的元素)。 返回: 列表中的上一個(gè)元素。 拋出: NoSuchElementException - 如果沒(méi)有可迭代的上一個(gè)元素。3.07 previousIndex()
int previousIndex()返回對(duì) previous 的后續(xù)調(diào)用所返回元素的索引。(如果列表迭代器在列表的開(kāi)始,則返回 -1)。 返回: 對(duì) previous 的后續(xù)調(diào)用所返回元素的索引,如果列表迭代器在列表的開(kāi)始,則返回 -1。3.07 remove()
void remove()從列表中移除由 next 或 previous 返回的最后一個(gè)元素(可選操作)。對(duì)于每個(gè) next 或 previous 調(diào)用,只能執(zhí)行一次此調(diào)用。只有在最后一次調(diào)用 next 或 previous 之后,尚未調(diào)用 ListIterator.add 時(shí)才可以執(zhí)行該調(diào)用。 指定者: 接口 Iterator3.07 set(E e)中的 remove 拋出: UnsupportedOperationException - 如果列表迭代器不支持 remove 操作。 IllegalStateException - 既沒(méi)有調(diào)用 next 也沒(méi)有調(diào)用 previous,或者在最后一次調(diào)用 next 或 previous 后調(diào)用了 remove 或 add。
void set(E e)用指定元素替換 next 或 previous 返回的最后一個(gè)元素(可選操作)。只有在最后一次調(diào)用 next 或 previous 后既沒(méi)有調(diào)用 ListIterator.remove 也沒(méi)有調(diào)用 ListIterator.add 時(shí)才可以進(jìn)行該調(diào)用。 參數(shù): e - 用于替換 next 或 previous 返回的最后一個(gè)元素的元素。 拋出: UnsupportedOperationException - 如果列表迭代器不支持 set 操作。 ClassCastException - 如果指定元素的類(lèi)不允許該元素添加到此列表。 IllegalArgumentException - 如果指定元素的某個(gè)方面不允許該元素添加到此列表。 IllegalStateException - 如果既沒(méi)有調(diào)用 next 也沒(méi)有調(diào)用 previous,或者在最后一次調(diào)用 next 或 previous 后調(diào)用了 remove 或 add。六、ArrayList類(lèi) 1. ArrayList類(lèi)的全稱(chēng)
public class ArrayList2. ArrayList類(lèi)的概述extends AbstractList implements List , RandomAccess, Cloneable, Serializable
底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組,查詢(xún)快,增刪慢
線(xiàn)程不安全,效率高
使用ArrayList類(lèi)的contains方法判斷是否包含,底層調(diào)用的是equals方法,需要考慮是否重寫(xiě)equals方法。
使用ArrayList類(lèi)的remove方法刪除元素,底層調(diào)用的是equals方法,需要考慮是否重寫(xiě)equals方法。
3. ArrayList類(lèi)的體系圖 4. ArrayList類(lèi)的構(gòu)造方法方法: * public ArrayList() 功能: * 構(gòu)造一個(gè)初始容量為10的空列表。
方法: * public ArrayList(Collection extends E> c) 功能: * 構(gòu)造一個(gè)包含指定collection的元素的列表,這些元素是按照該collection的迭代器返回它們的順序排列的。 參數(shù): * c-其元素將放置在此列表中的collection 拋出: * NullPointerException-如果指定的collection為null
方法: * public ArrayList(int initialCapacity) 功能: * 構(gòu)造一個(gè)具有指定初始容量的空列表。 參數(shù): * initialCapacity-列表的初始容量 拋出: * IllegalArgumentException-如果指定的初始容量為負(fù)5. ArrayList類(lèi)的成員方法 5.01 clone()
方法: * public Object clone() 功能: * 返回此ArrayList實(shí)例的淺表副本。(不復(fù)制這些元素本身。) 覆蓋: * Object類(lèi)中的clone方法 返回: * 此ArrayList實(shí)例的一個(gè)副本5.02 ensureCapacity(int minCapacity)
方法: * public void ensureCapacity(int minCapacity) 功能: * 如有必要,增加此ArrayList實(shí)例的容量,以確保它至少能夠容納最小容量參數(shù)所指定的元素?cái)?shù)。 參數(shù): * minCapacity-所需的最小容量5.03 removeRange(int fromIndex,int toIndex)
方法: * protected void removeRange(int fromIndex,int toIndex) 方法: * 移除列表中索引在fromIndex(包括)和toIndex(不包括)之間的所有元素。 * 過(guò)程:向左移動(dòng)所有后續(xù)元素(減小其索引)。 * 此調(diào)用將列表縮短了 (toIndex - fromIndex) 個(gè)元素。(如果 toIndex==fromIndex,則此操作無(wú)效。) 覆蓋: * AbstractList5.04 trimToSize()類(lèi)中的removeRange方法 參數(shù): * fromIndex-要移除的首個(gè)元素的索引。 * toIndex-最后一個(gè)要移除的元素后面那個(gè)元素的索引。 拋出: * IndexOutOfBoundsException-如果fromIndex或toIndex超出范圍 (fromIndex < 0 || fromIndex >= size() || toIndex > size() || toIndex < fromIndex)
方法: * public void trimToSize() 功能: * 將此ArrayList實(shí)例的容量調(diào)整為列表的當(dāng)前大小。 * 應(yīng)用程序可以使用此操作來(lái)最小化ArrayList實(shí)例的存儲(chǔ)量。七、LinkedList類(lèi) 1. LinkedList類(lèi)的全稱(chēng)
public class LinkedList2. LinkedList類(lèi)的概述extends AbstractSequentialList implements List , Deque , Cloneable, Serializable
在JDK中是以雙向鏈表實(shí)現(xiàn)的。
底層數(shù)據(jù)結(jié)構(gòu)是鏈表,查詢(xún)慢,增刪快
線(xiàn)程不安全,效率高
LinkedList實(shí)現(xiàn)了Deque接口,因此,可以操作LinkedList像操作隊(duì)列和棧一樣
3. LinkedList類(lèi)的體系圖 4. LinkedList類(lèi)的構(gòu)造方法方法: * public LinkedList() 功能: * 構(gòu)造一個(gè)空列表。
方法: * public LinkedList(Collection extends E> c) 功能: * 構(gòu)造一個(gè)包含指定collection中的元素的列表,這些元素按其collection的迭代器返回的順序排列。 參數(shù): * c-要將其元素放入此列表的collection 拋出: * NullPointerException-如果指定的collection為null5. LinkedList類(lèi)的成員方法 5.01 addFirst(E e)
方法: * public E getFirst() 功能: * 返回此列表的第一個(gè)元素。 指定者: * 接口 Deque5.02 addLast(E e)中的 getFirst 返回: * 此列表的第一個(gè)元素 拋出: * NoSuchElementException - 如果此列表為空
方法: * public E getLast() 功能: * 返回此列表的最后一個(gè)元素。 指定者: * 接口 Deque5.03 clone()中的 getLast 返回: * 此列表的最后一個(gè)元素 拋出: * NoSuchElementException - 如果此列表為空
方法: * public Object clone() 功能: * 返回此LinkedList的淺表副本。(這些元素本身沒(méi)有復(fù)制。) 覆蓋: * 類(lèi)Object中的clone。 返回: * 此LinkedList實(shí)例的淺表副本。5.04 getFirst()
方法: * public E getFirst() 功能: * 返回此列表的第一個(gè)元素。 指定者: * Deque5.05 getLast()接口中的getFirst方法 返回: * 此列表的第一個(gè)元素 拋出: * NoSuchElementException - 如果此列表為空
方法: * public E getLast() 功能: * 返回此列表的最后一個(gè)元素。 指定者: * 接口 Deque5.06 remove()中的 getLast 返回: * 此列表的最后一個(gè)元素 拋出: * NoSuchElementException - 如果此列表為空
public E remove()獲取并移除此列表的頭(第一個(gè)元素)。 指定者: 接口 Deque5.07 removeFirst()中的 remove 指定者: 接口 Queue 中的 remove 返回: 列表的頭 拋出: NoSuchElementException - 如果此列表為空
方法: * public E removeFirst() 功能: * 移除并返回此列表的第一個(gè)元素。 指定者: * 接口 Deque5.08 removeLast()中的 removeFirst 返回: * 此列表的第一個(gè)元素 拋出: * NoSuchElementException - 如果此列表為空
方法: * public E removeLast() 功能: * 移除并返回此列表的最后一個(gè)元素。 指定者: * Deque5.09 removeFirstOccurrence(Object o)接口中的removeLast方法 返回: * 此列表的最后一個(gè)元素 拋出: * NoSuchElementException - 如果此列表為空
public boolean removeFirstOccurrence(Object o)從此列表中移除第一次出現(xiàn)的指定元素(從頭部到尾部遍歷列表時(shí))。如果列表不包含該元素,則不作更改。 指定者: 接口 Deque5.10 removeLastOccurrence(Object o)中的 removeFirstOccurrence 參數(shù): o - 要從此列表中移除的元素(如果存在) 返回: 如果該列表已包含指定元素,則返回 true
public boolean removeLastOccurrence(Object o)從此列表中移除最后一次出現(xiàn)的指定元素(從頭部到尾部遍歷列表時(shí))。如果列表不包含該元素,則不作更改。 指定者: 接口 Deque5.11 descendingIterator()中的 removeLastOccurrence 參數(shù): o - 要從此列表中移除的元素(如果存在) 返回: 如果該列表已包含指定元素,則返回 true
public Iterator5.12 element()descendingIterator()從接口 Deque 復(fù)制的描述 返回以逆向順序在此雙端隊(duì)列的元素上進(jìn)行迭代的迭代器。元素將按從最后一個(gè)(尾部)到第一個(gè)(頭部)的順序返回。 指定者: 接口 Deque 中的 descendingIterator 返回: 以逆向順序在此雙端隊(duì)列中的元素上進(jìn)行迭代的迭代器
public E element()獲取但不移除此列表的頭(第一個(gè)元素)。 指定者: 接口 Deque5.13 offer(E e)中的 element 指定者: 接口 Queue 中的 element 返回: 列表的頭 拋出: NoSuchElementException - 如果此列表為空
public boolean offer(E e)將指定元素添加到此列表的末尾(最后一個(gè)元素)。 指定者: 接口 Deque5.14 offerFirst(E e)中的 offer 指定者: 接口 Queue 中的 offer 參數(shù): e - 要添加的元素 返回: true(根據(jù) Queue.offer(E) 的規(guī)定)
public boolean offerFirst(E e)在此列表的開(kāi)頭插入指定的元素。 指定者: 接口 Deque5.15 offerLast(E e)中的 offerFirst 參數(shù): e - 要插入的元素 返回: true(根據(jù) Deque.offerFirst(E) 的規(guī)定)
public boolean offerLast(E e)在此列表末尾插入指定的元素。 指定者: 接口 Deque5.16 peek()中的 offerLast 參數(shù): e - 要插入的元素 返回: true(根據(jù) Deque.offerLast(E) 的規(guī)定)
public E peek()獲取但不移除此列表的頭(第一個(gè)元素)。 指定者: 接口 Deque5.17 peekFirst()中的 peek 指定者: 接口 Queue 中的 peek 返回: 此列表的頭,如果此列表為空,則返回 null
public E peekFirst()獲取但不移除此列表的第一個(gè)元素;如果此列表為空,則返回 null。 指定者: 接口 Deque5.18 peekLast()中的 peekFirst 返回: 此列表的第一個(gè)元素;如果此列表為空,則返回 null
public E peekLast()獲取但不移除此列表的最后一個(gè)元素;如果此列表為空,則返回 null。 指定者: 接口 Deque5.19 poll()中的 peekLast 返回: 此列表的最后一個(gè)元素;如果此列表為空,則返回 null
public E poll()獲取并移除此列表的頭(第一個(gè)元素) 指定者: 接口 Deque5.20 pollFirst(中的 poll 指定者: 接口 Queue 中的 poll 返回: 此列表的頭,如果此列表為空,則返回 null
public E pollFirst()獲取并移除此列表的第一個(gè)元素;如果此列表為空,則返回 null。 指定者: 接口 Deque5.21 pollLast()中的 pollFirst 返回: 此列表的第一個(gè)元素;如果此列表為空,則返回 null
方法: * public E pollLast() 功能: * 獲取并移除此列表的最后一個(gè)元素;如果此列表為空,則返回 null。 指定者: * 接口Deque5.22 pop()中的pollLast 返回: * 此列表的最后一個(gè)元素;如果此列表為空,則返回null
方法: * public E pop() 功能: * 從此列表所表示的堆棧處彈出一個(gè)元素。 * 換句話(huà)說(shuō),移除并返回此列表的第一個(gè)元素。 * 此方法等效于removeFirst()。 指定者: * 接口Deque5.23 push(E e)中的pop方法 返回: * 此列表開(kāi)頭的元素(它是此列表所表示的堆棧的頂部) 拋出: * NoSuchElementException-如果此列表為空
方法: * public void push(E e) 功能: * 將元素推入此列表所表示的堆棧。 * 換句話(huà)說(shuō),將該元素插入此列表的開(kāi)頭。 * 此方法等效于addFirst(E)。 指定者: * 接口Deque八、Vector類(lèi) 1. Vector類(lèi)的全稱(chēng)中的push方法。 參數(shù): * e-要推入的元素
public class Vector2. Vector類(lèi)的概述extends AbstractList implements List , RandomAccess, Cloneable, Serializable
底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組,查詢(xún)快,增刪慢
線(xiàn)程安全,效率低(我們也不用Vector)
3. Vector類(lèi)的成員變量字段: * protected int capacityIncrement 描述: * 向量的大小大于其容量時(shí),容量自動(dòng)增加的量。 * 如果容量的增量小于等于零,則每次需要增大容量時(shí),向量的容量將增大一倍。
字段: * protected int elementCountVector 描述: * 對(duì)象中的有效組件數(shù)。 * 從 elementData[0] 到 elementData[elementCount-1] 的組件均為實(shí)際項(xiàng)。
字段: * protected Object[] elementData 描述: * 存儲(chǔ)向量組件的數(shù)組緩沖區(qū)。vector 的容量就是此數(shù)據(jù)緩沖區(qū)的長(zhǎng)度,該長(zhǎng)度至少要足以包含向量的所有元素。 * Vector 中的最后一個(gè)元素后的任何數(shù)組元素都為 null。4. Vector類(lèi)的構(gòu)造方法
方法: * public Vector() 功能: * 構(gòu)造一個(gè)空向量,使其內(nèi)部數(shù)據(jù)數(shù)組的大小為 10,其標(biāo)準(zhǔn)容量增量為零。
方法: * public Vector(Collection extends E> c) 功能: * 構(gòu)造一個(gè)包含指定collection中的元素的向量,這些元素按其collection的迭代器返回元素的順序排列。 參數(shù): * c-其元素要放入此向量中的collection 拋出: * NullPointerException-如果指定的collection為null
方法: * public Vector(int initialCapacity) 功能: * 使用指定的初始容量和等于零的容量增量構(gòu)造一個(gè)空向量。 參數(shù): * initialCapacity-向量的初始容量 拋出: * IllegalArgumentException-如果指定的初始容量為負(fù)數(shù)
方法: * public Vector(int initialCapacity,int capacityIncrement) 功能: * 使用指定的初始容量和容量增量構(gòu)造一個(gè)空的向量。 參數(shù): * initialCapacity-向量的初始容量 * capacityIncrement-當(dāng)向量溢出時(shí)容量增加的量 拋出: * IllegalArgumentException-如果指定的初始容量為負(fù)數(shù)5. Vector類(lèi)的成員方法 4.01 略 4.02 略 4.03 略 4.04 略 九、Set接口 1. Set接口的全稱(chēng)
public interface Set2. Set接口的概述extends Collection
一個(gè)不包含重復(fù)元素的collection
十、HashSet類(lèi) 1. HashSet類(lèi)的全稱(chēng)public class HashSet2. HashSet類(lèi)的概述extends AbstractSet implements Set , Cloneable, Serializable
不保證set的迭代順序,特別是它不保證該順序恒久不變
無(wú)索引
3. HashSet類(lèi)保證元素唯一底層數(shù)據(jù)結(jié)構(gòu)是哈希表(元素為鏈表的數(shù)組)
哈希表依賴(lài)于哈希值存儲(chǔ)
4. HashSet類(lèi)的添加功能底層依賴(lài)兩個(gè)方法int hashCode()
boolean equals(Object obj)
先使用hashCode方法,再使用equals方法。即若hashCode方法返回的結(jié)果相同再使用equals方法。5. HashSet類(lèi)的成員方法 十一、LinkedHashSet類(lèi) 1. LinkedHashSet類(lèi)的全稱(chēng)
public class LinkedHashSet2. LinkedHashSet類(lèi)的概述extends HashSet implements Set , Cloneable, Serializable
元素有序唯一
由鏈表保證元素有序
由哈希表保證元素唯一
底層數(shù)據(jù)結(jié)構(gòu)由哈希表和鏈表組成。
3. LinkedHashSet類(lèi)的成員方法 十二、TreeSet類(lèi) 1. TreeSet類(lèi)的全稱(chēng)public class TreeSet2. TreeSet類(lèi)的概述extends AbstractSet implements NavigableSet , Cloneable, Serializable
使用元素的自然順序?qū)υ剡M(jìn)行排序
或者根據(jù)創(chuàng)建set時(shí)提供的Comparator進(jìn)行排序
具體取決于使用的構(gòu)造方法。
3. TreeSet類(lèi)保證元素的排序和唯一性底層數(shù)據(jù)結(jié)構(gòu)是紅黑樹(shù)(紅黑樹(shù)是一種自平衡的二叉樹(shù))
保證元素的排序方式
4. TreeSet類(lèi)的構(gòu)造方法方法: * public TreeSet() 功能: * 構(gòu)造一個(gè)新的空set,該set根據(jù)其元素的自然順序進(jìn)行排序。 * 插入該set的所有元素都必須實(shí)現(xiàn)Comparable接口。 * 所有這些元素都必須是可互相比較的:對(duì)于set中的任意兩個(gè)元素e1和e2,執(zhí)行e1.compareTo(e2)都不得拋出 ClassCastException。 * 如果用戶(hù)試圖將違反此約束的元素添加到set(例如,用戶(hù)試圖將字符串元素添加到其元素為整數(shù)的 set 中),則add調(diào)用將拋出ClassCastException。
方法: * public TreeSet(Collection extends E> c) 功能: * 構(gòu)造一個(gè)包含指定collection元素的新TreeSet,它按照其元素的自然順序進(jìn)行排序。 * 插入該set的所有元素都必須實(shí)現(xiàn)Comparable接口。 * 另外,所有這些元素都必須是可互相比較的:對(duì)于set中的任意兩個(gè)元素 e1和e2,執(zhí)行e1.compareTo(e2)都不得拋出ClassCastException。 參數(shù): * c-一個(gè)collection,其元素將組成新的set 拋出: * ClassCastException-如果c中的元素不是Comparable,或者是不可相互比較的 * NullPointerException-如果指定collection為null
方法: * public TreeSet(Comparator super E> comparator) 功能: * 構(gòu)造一個(gè)新的空 TreeSet,它根據(jù)指定比較器進(jìn)行排序。 * 插入到該set的所有元素都必須能夠由指定比較器進(jìn)行相互比較:對(duì)于set中的任意兩個(gè)元素e1和e2,執(zhí)行comparator.compare(e1, e2)都不得拋出ClassCastException。 * 如果用戶(hù)試圖將違反此約束的元素添加到set中,則add調(diào)用將拋出ClassCastException。 參數(shù): * comparator-將用來(lái)對(duì)此set進(jìn)行排序的比較器。如果該參數(shù)為null,則使用元素的自然順序。
方法: * public TreeSet(SortedSet5. TreeSet類(lèi)的成員方法 十三、Map接口 1. Map接口的全稱(chēng)s) 功能: * 構(gòu)造一個(gè)與指定有序set具有相同映射關(guān)系和相同排序的新TreeSet。 參數(shù): * s-一個(gè)有序set,其元素將組成新set 拋出: * NullPointerException-如果指定有序set為null
public interface Map2. Map接口的概述
Map是雙列集合。
3. Map接口的成員方法 3.01 clear()方法: * void clear() 功能: * 從此映射中移除所有映射關(guān)系(可選操作)。 * 此調(diào)用返回后,該映射將為空。 拋出: * UnsupportedOperationException-如果此映射不支持clear操作。3.02 containsKey(Object key)
方法: * boolean containsKey(Object key) 功能: * 如果此映射包含指定鍵的映射關(guān)系,則返回true。 * 即當(dāng)且僅當(dāng)此映射包含針對(duì)滿(mǎn)足 (key==null ? k==null : key.equals(k)) 的鍵k的映射關(guān)系時(shí),返回 true,且最多只能有一個(gè)這樣的映射關(guān)系。 參數(shù): * key-測(cè)試是否存在于此映射中的鍵 返回: * 如果此映射包含指定鍵的映射關(guān)系,則返回true 拋出: * ClassCastException-如果該鍵對(duì)于此映射是不合適的類(lèi)型(可選) * NullPointerException-如果指定鍵為null并且此映射不允許null鍵(可選)3.03 containsValue(Object value)
方法: * boolean containsValue(Object value) 功能: * 如果此映射將一個(gè)或多個(gè)鍵映射到指定值,則返回true。 * 即當(dāng)且僅當(dāng)此映射至少包含一個(gè)對(duì)滿(mǎn)足 (value==null ? v==null : value.equals(v)) 的值v的映射關(guān)系時(shí),返回true。 * 對(duì)于大多數(shù)Map接口的實(shí)現(xiàn)而言,此操作需要的時(shí)間可能與映射大小呈線(xiàn)性關(guān)系。 參數(shù): * value-測(cè)試是否存在于此映射中的值 返回: * 如果此映射將一個(gè)或多個(gè)鍵映射到指定值,則返回 true 拋出: * ClassCastException-如果該值對(duì)于此映射是不合適的類(lèi)型(可選) * NullPointerException-如果指定值為null并且此映射不允許null值(可選)3.04 entrySet()
方法: * Set3.05 equals(Object o)> entrySet() * 返回此映射中包含的映射關(guān)系的 Set 視圖。該 set 受映射支持,所以對(duì)映射的更改可在此 set 中反映出來(lái),反之亦然。如果對(duì)該 set 進(jìn)行迭代的同時(shí)修改了映射(通過(guò)迭代器自己的 remove 操作,或者通過(guò)對(duì)迭代器返回的映射項(xiàng)執(zhí)行 setValue 操作除外),則迭代結(jié)果是不確定的。set 支持元素移除,通過(guò) Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作可從映射中移除相應(yīng)的映射關(guān)系。它不支持 add 或 addAll 操作。 返回: * 此映射中包含的映射關(guān)系的 set 視圖
方法: * boolean equals(Object o)比較指定的對(duì)象與此映射是否相等。如果給定的對(duì)象也是一個(gè)映射,并且這兩個(gè)映射表示相同的映射關(guān)系,則返回 true。更確切地講,如果 m1.entrySet().equals(m2.entrySet()),則兩個(gè)映射 m1 和 m2 表示相同的映射關(guān)系。這可以確保 equals 方法在不同的 Map 接口實(shí)現(xiàn)間運(yùn)行正常。 覆蓋: * 類(lèi) Object 中的 equals 參數(shù): * o - 要與此映射進(jìn)行相等性比較的對(duì)象 返回: * 如果指定的對(duì)象等于此映射,則返回 true3.06 get(Object key)
V get(Object key)返回指定鍵所映射的值;如果此映射不包含該鍵的映射關(guān)系,則返回 null。 更確切地講,如果此映射包含滿(mǎn)足 (key==null ? k==null : key.equals(k)) 的鍵 k 到值 v 的映射關(guān)系,則此方法返回 v;否則返回 null。(最多只能有一個(gè)這樣的映射關(guān)系)。 如果此映射允許 null 值,則返回 null 值并不一定 表示該映射不包含該鍵的映射關(guān)系;也可能該映射將該鍵顯示地映射到 null。使用 containsKey 操作可區(qū)分這兩種情況。 參數(shù): key - 要返回其關(guān)聯(lián)值的鍵 返回: 指定鍵所映射的值;如果此映射不包含該鍵的映射關(guān)系,則返回 null 拋出: ClassCastException - 如果該鍵對(duì)于此映射是不合適的類(lèi)型(可選) NullPointerException - 如果指定鍵為 null 并且此映射不允許 null 鍵(可選)3.07 hashCode()
方法: * int hashCode() 功能: * 返回此映射的哈希碼值。 * 映射的哈希碼定義為此映射entrySet()視圖中每個(gè)項(xiàng)的哈希碼之和。這確保 m1.equals(m2) 對(duì)于任意兩個(gè)映射 m1 和 m2 而言,都意味著 m1.hashCode()==m2.hashCode(),正如 Object.hashCode() 常規(guī)協(xié)定的要求。 覆蓋: * Object類(lèi)中的hashCode方法。 返回: * 此映射的哈希碼值。3.08 isEmpty()
方法: * boolean isEmpty() 功能: * 如果此映射未包含鍵-值映射關(guān)系,則返回true。 返回: * 如果此映射未包含鍵-值映射關(guān)系,則返回true。3.09 keySet()
Set3.10 put(K key,V value)keySet()返回此映射中包含的鍵的 Set 視圖。該 set 受映射支持,所以對(duì)映射的更改可在此 set 中反映出來(lái),反之亦然。如果對(duì)該 set 進(jìn)行迭代的同時(shí)修改了映射(通過(guò)迭代器自己的 remove 操作除外),則迭代結(jié)果是不確定的。set 支持元素移除,通過(guò) Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作可從映射中移除相應(yīng)的映射關(guān)系。它不支持 add 或 addAll 操作。 返回: 此映射中包含的鍵的 set 視圖
V put(K key,V value)將指定的值與此映射中的指定鍵關(guān)聯(lián)(可選操作)。如果此映射以前包含一個(gè)該鍵的映射關(guān)系,則用指定值替換舊值(當(dāng)且僅當(dāng) m.containsKey(k) 返回 true 時(shí),才能說(shuō)映射 m 包含鍵 k 的映射關(guān)系)。 參數(shù): key - 與指定值關(guān)聯(lián)的鍵 value - 與指定鍵關(guān)聯(lián)的值 返回: 以前與 key 關(guān)聯(lián)的值,如果沒(méi)有針對(duì) key 的映射關(guān)系,則返回 null。(如果該實(shí)現(xiàn)支持 null 值,則返回 null 也可能表示此映射以前將 null 與 key 關(guān)聯(lián))。 拋出: UnsupportedOperationException - 如果此映射不支持 put 操作 ClassCastException - 如果指定鍵或值的類(lèi)不允許將其存儲(chǔ)在此映射中 NullPointerException - 如果指定鍵或值為 null,并且此映射不允許 null 鍵或值 IllegalArgumentException - 如果指定鍵或值的某些屬性不允許將其存儲(chǔ)在此映射中3.11 putAll(Map extends K,? extends V> m)
void putAll(Map extends K,? extends V> m)從指定映射中將所有映射關(guān)系復(fù)制到此映射中(可選操作)。對(duì)于指定映射中的每個(gè)鍵 k 到值 v 的映射關(guān)系,此調(diào)用等效于對(duì)此映射調(diào)用一次 put(k, v)。如果正在進(jìn)行此操作的同時(shí)修改了指定的映射,則此操作的行為是不確定的。 參數(shù): m - 要存儲(chǔ)在此映射中的映射關(guān)系 拋出: UnsupportedOperationException - 如果此映射不支持 putAll 操作 ClassCastException - 如果指定映射中的鍵或值的類(lèi)不允許將其存儲(chǔ)在此映射中 NullPointerException - 如果指定映射為 null,或者此映射不允許 null 鍵或值,并且指定的映射包含 null 鍵或值 IllegalArgumentException - 如果指定映射中的鍵或值的某些屬性不允許將其存儲(chǔ)在此映射中3.12 remove(Object key)
方法: * V remove(Object key) 功能: * 如果存在一個(gè)鍵的映射關(guān)系,則將其從此映射中移除(可選操作)。更確切地講,如果此映射包含從滿(mǎn)足 (key==null ? k==null :key.equals(k)) 的鍵 k 到值 v 的映射關(guān)系,則移除該映射關(guān)系。(該映射最多只能包含一個(gè)這樣的映射關(guān)系。) 返回此映射中以前關(guān)聯(lián)該鍵的值,如果此映射不包含該鍵的映射關(guān)系,則返回 null。 如果此映射允許 null 值,則返回 null 值并不一定 表示該映射不包含該鍵的映射關(guān)系;也可能該映射將該鍵顯示地映射到 null。 調(diào)用返回后,此映射將不再包含指定鍵的映射關(guān)系。 參數(shù): key - 從映射中移除其映射關(guān)系的鍵 返回: 以前與 key 關(guān)聯(lián)的值;如果沒(méi)有 key 的映射關(guān)系,則返回 null。 拋出: UnsupportedOperationException - 如果此映射不支持 remove 操作 ClassCastException - 如果該鍵對(duì)于此映射是不合適的類(lèi)型(可選) NullPointerException - 如果指定鍵為 null 并且此映射不允許 null 鍵(可選)3.13 size()
方法: * int size() 功能: * 返回此映射中的鍵-值映射關(guān)系數(shù)。 * 如果該映射包含的元素大于Integer.MAX_VALUE,則返回Integer.MAX_VALUE。 返回: * 此映射中的鍵-值映射關(guān)系數(shù)。3.14 values()
方法: * Collection十四、HashMap類(lèi) 1. HashMap類(lèi)的全稱(chēng)values() 功能: * 返回此映射中包含的值的 Collection 視圖。該 collection 受映射支持,所以對(duì)映射的更改可在此 collection 中反映出來(lái),反之亦然。如果對(duì)該 collection 進(jìn)行迭代的同時(shí)修改了映射(通過(guò)迭代器自己的 remove 操作除外),則迭代結(jié)果是不確定的。collection 支持元素移除,通過(guò) Iterator.remove、Collection.remove、removeAll、retainAll 和 clear 操作可從映射中移除相應(yīng)的映射關(guān)系。它不支持 add 或 addAll 操作。 返回: * 此映射中包含的值的 collection 視圖
public class HashMap2. HashMap類(lèi)的概述 3. HashMap類(lèi)的成員方法 十五、LinkedHashMap類(lèi) 1. LinkedHashMap類(lèi)的全稱(chēng)extends AbstractMap implements Map , Cloneable, Serializable
public class LinkedHashMap2. LinkedHashMap類(lèi)的概述 3. LinkedHashMap類(lèi)的成員方法 十六、TreeMap類(lèi) 1. TreeMap類(lèi)的全稱(chēng)extends HashMap implements Map
public class TreeMap2. TreeMap類(lèi)的概述extends AbstractMap implements NavigableMap , Cloneable, Serializable
鍵是紅黑樹(shù)結(jié)構(gòu),可以保證鍵的排序和唯一性
3. TreeMap類(lèi)的成員方法 十七、數(shù)組和集合 1. 數(shù)組轉(zhuǎn)集合的方法 2. 數(shù)組轉(zhuǎn)集合的特點(diǎn)3. 集合轉(zhuǎn)數(shù)組的方法 4. 集合轉(zhuǎn)數(shù)組的特點(diǎn)
十八、增強(qiáng)for循環(huán) 1. 概述
簡(jiǎn)化數(shù)組和Collection集合的遍歷
2. 格式for(元素?cái)?shù)據(jù)類(lèi)型 變量 : 數(shù)組或者Collection集合) { /*使用變量即可,該變量就是元素*/ }3. 好處
簡(jiǎn)化遍歷
4. 注意事項(xiàng)增強(qiáng)for的目標(biāo)需要判斷是否為null
5. 三種迭代能否刪除普通for循環(huán)可以,但是索引要--。
迭代器可以刪除,但是必須要使用迭代器自身的remove方法,不能使用集合的remove方法,否則會(huì)出現(xiàn)并發(fā)修改異常。
增強(qiáng)for循環(huán)不能刪除。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/75862.html
摘要:哪吒社區(qū)技能樹(shù)打卡打卡貼函數(shù)式接口簡(jiǎn)介領(lǐng)域優(yōu)質(zhì)創(chuàng)作者哪吒公眾號(hào)作者架構(gòu)師奮斗者掃描主頁(yè)左側(cè)二維碼,加入群聊,一起學(xué)習(xí)一起進(jìn)步歡迎點(diǎn)贊收藏留言前情提要無(wú)意間聽(tīng)到領(lǐng)導(dǎo)們的談話(huà),現(xiàn)在公司的現(xiàn)狀是碼農(nóng)太多,但能獨(dú)立帶隊(duì)的人太少,簡(jiǎn)而言之,不缺干 ? 哪吒社區(qū)Java技能樹(shù)打卡?【打卡貼 day2...
摘要:數(shù)字在中,整型長(zhǎng)整型浮點(diǎn)數(shù)負(fù)數(shù)布爾值等都可以稱(chēng)之為數(shù)字類(lèi)型。數(shù)字類(lèi)型的復(fù)雜度整數(shù)比浮點(diǎn)數(shù)簡(jiǎn)單浮點(diǎn)數(shù)比復(fù)數(shù)簡(jiǎn)單。布爾類(lèi)型布爾類(lèi)型其實(shí)就是數(shù)字和的變種而來(lái),即真或假,實(shí)際上就是內(nèi)置的數(shù)字類(lèi)型的子類(lèi)而已。 上篇文章中我們簡(jiǎn)單的體驗(yàn)了Python語(yǔ)言基本概念與語(yǔ)法,那么在繼續(xù)深入下去的過(guò)程中,不妨先學(xué)習(xí)幾個(gè)常見(jiàn)的Python內(nèi)置數(shù)據(jù)類(lèi)型?這也是大部分Python教科書(shū)的學(xué)習(xí)目錄,由淺至深,慢慢...
摘要:源網(wǎng)頁(yè)說(shuō)明文檔所有關(guān)于你應(yīng)該且必須知道的。性能和優(yōu)化概述的兼容性旨在兼容多種不同版本的支持的兼容性地理框架打算成為世界級(jí)的地理框架。其目標(biāo)是盡可能簡(jiǎn)單地構(gòu)建應(yīng)用程序并利用空間使能數(shù)據(jù)的功能。 源網(wǎng)頁(yè):https://docs.djangoproject.co... django說(shuō)明文檔 所有關(guān)于django你應(yīng)該且必須知道的。 第一步 你是否django編程新手,那就從此開(kāi)始!從零開(kāi)始...
閱讀 2385·2021-11-24 10:31
閱讀 3438·2021-11-23 09:51
閱讀 2252·2021-11-15 18:11
閱讀 2398·2021-09-02 15:15
閱讀 2462·2019-08-29 17:02
閱讀 2295·2019-08-29 15:04
閱讀 842·2019-08-29 12:27
閱讀 2866·2019-08-28 18:15