一. 容器簡(jiǎn)介
1. 容器的分類
1.1. Collection:一組各自獨(dú)立的元素,即其內(nèi)的每個(gè)位置僅持有一個(gè)元素。
1) List:以元素安插的次序來放置元素,不會(huì)重新排列。
2) Set:不接愛重復(fù)元素,它會(huì)使用自己內(nèi)部的一個(gè)排列機(jī)制
1.2. Map:一群成對(duì)的key-value對(duì)象,即所持有的是key-value pairs。
Map中不能有重復(fù)的key,它擁有自己的內(nèi)部排列機(jī)制。
2. 容器中的元素類型都為Object。從容器取得元素時(shí),必須把它轉(zhuǎn)換成原來的類型。
二. 容器的詳細(xì)介紹
1. Collection
Collection不提供get()方法。如果要遍歷Collectin中的元素,就必須用Iterator。
1.1. List
1.1.1 List(interface):List為Collectin加入了一些函數(shù),使它可以在List內(nèi)進(jìn)行安插和移除動(dòng)作。List會(huì)產(chǎn)生ListIterator,通過它可以從兩個(gè)方向來對(duì)List進(jìn)行走訪,也可以在List之內(nèi)進(jìn)行元素的安插和移除。
1.1.2 ArrayList:可以快速隨機(jī)訪問;但當(dāng)元素的安插或移除發(fā)生在List中央位置時(shí),效率很差。不宜用ArrayList來進(jìn)行安插和移除操作。
1.1.3 LinkedList:與ArrayList相反,適合用來進(jìn)行安插和移除,但隨機(jī)訪問的速度較慢。此外,可以通過LinkedList來實(shí)現(xiàn)stack、queue、deque。
1) LinkedList中的addFirst()、addLast()、getFirst()、getLast()、removeFirst()、removeLast()函數(shù)未定義于任何一個(gè)interface或base class中,所以只能用于LinkedList中。
1.2. Set
1.2.1 Set(interface):Set具有和Collection一模一樣的interface(區(qū)別:List加入了自己的函數(shù)),所以Set就是一個(gè)Collection,只不過其行為不同罷了。加至Set內(nèi)的每個(gè)元素都必須獨(dú)一無二,不與其他元素重復(fù);Set不允許持有重復(fù)元素,每個(gè)元素都必須定義equals()以判斷所謂的獨(dú)一性。
1.2.2 HashSet:一種把查找時(shí)間看得很重要的Sets。所有元素都必須定義hashCode()。
1.2.3 TreeSet:底層結(jié)構(gòu)為tree的一種有序的Set。
2. Map
2.1. Map:維護(hù)key-value的關(guān)聯(lián)性,使你可以使用key來查找value。
1) KeySet()函數(shù)和values()函數(shù)
import
java.util.*;
public class ExplicitStatic{
public static void printKeys(
java/util/Map.
java/lang/System.
/lang/System.