Java 複習 —— 集合

來源:互聯網
上載者:User

標籤:

1、類的基本結構

Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set

    |-HashSet

    |-TreeSet


Map
├Hashtable
├HashMap
└WeakHashMap


2、基本概念

0)Collection : 頂層介面,它都支援一個iterator()的方法,該方法返回一個迭代子,使用該迭代子即可逐一訪問Collection中每一個元素。public interface Collection<E> extends Iterable<E>

1)Set(集合):集合中的對象不按特定方式排序,並且沒有重複對象。它的有些實作類別(TreeSet)能對集合中的對象按特定方式排序。
2)List(列表):集合中的對象按索引位置排序,可以有重複對象,允許按照對象在集合中的索引位置檢索對象。
3)Map(映射):集合中的每一個元素包含一對鍵對象和值對象,集合中沒有重複的鍵對象,值對象可以重複。


3、實作類別的重要區別

1)ArrayList 和Vector是採用數組方式儲存資料,此數組元素數大於實際儲存的資料以便增加和插入元素,都允許直接序號索引元素,但是插入資料要設計到數組元素移動等記憶體操作,所以索引資料快插入資料慢;這就是線性表的順序表的優點和缺點,即查詢快,刪除、插入較慢。

2)Vector由於使用了synchronized方法(安全執行緒)所以效能上比ArrayList要差,但是在一些安全方法裡面他是很有用的。想要把一個List作為同步的線性表時,可以這樣使用:Collections.synchronizedList(list);

3)LinkedList使用雙向鏈表實現儲存,按序號索引資料需要進行向前或向後遍曆,但是插入資料時只需要記錄本項的前後項即可,所以插入數度較快!這就是線性表的鏈表的優點和缺點,即查詢慢,但是刪除插入快。可以用它作為隊列。

4)Stack繼承自Vector,實現一個後進先出的堆棧。Stack提供5個額外的方法使得Vector得以被當作堆棧使用。基本的push和pop方法,還有peek方法得到棧頂的元素,empty方法測試堆棧是否為空白,search方法檢測一個元素在堆棧中的位置。Stack剛建立後是空棧。

5)Queue 是一個Collection的子介面,Deque 是1.6 新增的介面繼承了Queue介面,他的子類主要就是完成隊列的棧的功能,相比之前的採用Stack或List(LinkedList實現了Deque)作為隊列與棧效果都要好,而且,Deque 是可以同時作為隊列和堆棧,他與List的一個很大區別是他沒有Index索引尋找元素。所以,如果需要使用隊列或堆棧時可以考慮Deque的子類:ArrayDeque

6)Set的實現其實和Map有著重大關係,看原始碼你就會發現,Set就是Map的key部分,Map的value則是一個常量替代。


4、其他注意事項

注意,開始學習的時候大家都認為,集合給我們最大的好處就是什麼對象都可以存入,如果是數組的話只能存入特定類型的對象,其實這個特點是集合的缺點,這也就是為什麼有泛型的出現,對於數組來說,集合的最大有點是集合可以邊長儲存元素!!如果是一個Object類型的數組不也一樣可以儲存任何資料類型的對象嗎?但是這樣又有什麼用呢?類型轉換是一個危險操作。


5、集合遍曆與刪除
 private void print(Collection<String> list ){  Iterator<String> iter = list.iterator();  while(iter.hasNext()){   String str = iter.next();   if(str.equals("key")){    iter.remove();   }  } }

不能採用其他方式的for迴圈刪除元素,否則會發生異常:java.util.ConcurrentModificationException

Java 複習 —— 集合

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.