常用集合簡析_第1頁
常用集合簡析_第2頁
常用集合簡析_第3頁
常用集合簡析_第4頁
常用集合簡析_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、常用集合簡析1.集合結(jié)構(gòu)2.List容器3.泛型4.Set容器5.迭代器6.Map容器7.數(shù)據(jù)結(jié)構(gòu)8.Arrays數(shù)組工具類8.總結(jié)集合結(jié)構(gòu)CollectionListLinkedListArrayListVectorStackSetMapHashtableHashMap集合類結(jié)構(gòu)關(guān)系圖List容器容器List的特性:1.可以存放任何類型的元素,元素可重復(fù)2.容器可變大小3.有序排列,可以使用索引來訪問List的實現(xiàn)類:ArrayList,LinkedList,Vector,StackList容器容器- ArrayListArrayList:List l=new ArrayList();數(shù)組列

2、表類,沒有線程同步。常用方法:add(Object obj);/插入元素,在末尾add(int i, Object obj);/在索引i處添加元素remove(int i);/移除i索引處的元素get(int i);/獲取索引i處的方法size();列表中的元素數(shù)toArray();將列表中的元素轉(zhuǎn)為數(shù)組List容器容器- LinkedListLinkedList:LinkedList l=new LinkedList();鏈表類,沒有線程同步。常用方法:addFirst(Object o);/將指定元素插入此列表的開頭 addLast(Object o);/將指定元素插入此列表的末尾getF

3、irst();/返回此列表的第一個元素。 getLast();/返回此列表的最后一個元素。 removeFirst();/刪除列表的第一個元素removeLast();/刪除列表的最后一個元素List容器容器- Vector, StackVector,Stack:可以把Vector看作實現(xiàn)了同步的ArrayList。而Stack是一個棧類,他繼承自Vector,實現(xiàn)了先進后出。Stack的幾個擴展方法:empty();測試堆棧是否為空。peek();查看堆棧頂部的對象。pop();移除堆棧頂部的對象。search();返回對象在堆棧中的位置泛型泛型所謂泛型是指將類型參數(shù)化以達到代碼復(fù)用,提高軟

4、件開發(fā)工作效率的一種數(shù)據(jù)類型。我們在用List存儲和取值的時候,其實都做了裝箱,拆箱的操作。顯然大量重復(fù)的裝拆箱動作會降低效率。eg:List l=new ArrayList () ;java的泛型規(guī)定了集合中存儲的數(shù)據(jù)類型,避免了不必要的裝拆箱動作。并且泛型可以起到檢測存儲類型的作用。Set容器容器Set的特性:1.可以存放任何類型的元素2.不可存放重復(fù)值3.無序排列,不可通過索引來訪問Set的實現(xiàn)類:HashSetSet容器容器- HashSetHashSet:Set l=new HashSet();散列集結(jié)構(gòu),沒有線程同步。常用方法:add(Object o)/添加元素clear()/移

5、除所有元素size()/返回此set中元素的數(shù)量remove(Object o)/移除某個元素containts(Object o)/如果此 set 包含指定元素,則返回 true怎樣遍歷一個Set集合的所有元素?迭代器迭代器/用Set構(gòu)建迭代器Iterator i=set.iterator();while(i.hasNext()Object o=i.next();System.out.println(o);for(Iterator iter=set.iterator();iter.hasNext();)iter.next();迭代器的三個方法:hasNext();/判斷是否有元素可迭代nex

6、t();/返回迭代的下一個元素remove()/移除當(dāng)前元素提供一種方法訪問一個容器對象中各個元素,而又不需暴露該對象的內(nèi)部細節(jié)。Iterator模式是用于遍歷集合類的標(biāo)準(zhǔn)訪問方法。它可以把訪問邏輯從不同類型的集合類中抽象出來,從而避免向客戶端暴露集合的內(nèi)部結(jié)構(gòu)。 Map容器容器Map的特性:1.以鍵(key)值(Value)配對的方式存放元素2.不可以包含相同的key3.散列表結(jié)構(gòu)Map的實現(xiàn)類:Hashtable,HashMapMap容器容器- HashtableHashtable:Map l=new HashTable();線程同步,任何非 null 對象都可以用作鍵或值 常用方法:pu

7、t(Object key,Object value)/將指定的key映射到valueget(Object key)/返回該key對應(yīng)的value值keySet()/返回此映射中的key的set集合values()/返回此映射中的value的Collection集合remove(Object key)/移除該key以及相應(yīng)的值Map容器容器- HashMapHashMap:Map l=new HashMap();HashMap和Hashtable方法基本相同。區(qū)別在于:HashMap是非同步,并且允許null作為key和value數(shù)據(jù)結(jié)構(gòu)鏈表:鏈表中的元素存儲在一條鏈的節(jié)點上。數(shù)組列表:動態(tài)變化

8、容量的數(shù)組。按序存儲在一系列連續(xù)的空間上。散列表:以鍵-值對應(yīng)的形式存儲元素,他是一個無序的數(shù)據(jù)結(jié)構(gòu)。散列集:通過內(nèi)部散列碼計算元素存儲地址,和散列表的區(qū)別是沒有鍵值。Arrays數(shù)組工具類數(shù)組工具類Arrays類提供了數(shù)組整理,比較和檢索功能。常用方法:/在數(shù)組t中,對key進行檢索,并返回key的位置,如果不存在則返回負數(shù)int binarySearch(T t,T key)/比較數(shù)組t和t1,如果數(shù)組元素相同則返回true,否則返回falseBoolean equals(T t,T t1)/將數(shù)組中的元素填充為valvoid fill(T t,T val)/將數(shù)組元素t中,從索引star

9、tIndex到endIndex的元素填充為valvoid fill(T t,int startIndex,int endIndex,T val)/將數(shù)組按升序排序void sort(T t)/將數(shù)組元素t中,從索引startIndex到endIndex的元素升序排序void sort(T t,int startIndex,int endIndexl)/將數(shù)組轉(zhuǎn)換為ListList asList(T)對象的排序規(guī)則對象的排序規(guī)則假設(shè)我們要對自定義的對象(Stu類)進行排序,那么就需要自定義一個排序規(guī)則,比如根據(jù)年齡,或者根據(jù)姓名自定義排序規(guī)則,適用于對象之間的比較和排序。只有實現(xiàn)了Compara

10、ble接口的類的實例才是可比較對象。public class Stu implements ComparableString name;int age;public int compareTo(Stu s) return name.hashCode()-.hashCode();compareTo:該方法用于指定排序規(guī)則,這里制定的是根據(jù)name排序,兩個對象的name屬性的哈希碼進行比較。對象的排序規(guī)則對象的排序規(guī)則public static void main(String args) Stu s1=new Stu(Z);Stu s2=new Stu(A);Stu s3=new

11、Stu(F);Stu s=s1,s2,s3;Arrays.sort(s);for(Stu stu:s)System.out.println();測試:可以看到輸出結(jié)果是:A,F(xiàn),Z。那如果要降序排列該如何做呢?總結(jié) l集合操作注意點:1、如果涉及到堆棧,隊列等操作,應(yīng)該考慮用List,對于需要快速插入,刪除元素,應(yīng)該使用LinkedList,如果需要快速隨機訪問元素,應(yīng)該使用ArrayList。2、如果程序在單線程環(huán)境中,或者訪問僅僅在一個線程中進行,考慮非同步的類,其效率較高,如果多個線程可能同時操作一個類,應(yīng)該使用同步的類。3、盡量返回接口而非實際的類型,如返回List而非ArrayList,這樣如果以后需要將ArrayList換成LinkedList時,客戶端代碼不用改變。這就是針對抽象編程。 4、Vector是同步的。這個

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論