集合
- 把具有相同性質(zhì)的一類東西,匯聚成一個整體,就可以稱為集合。
集合包含的三部分:
1.接口:即表示集合的抽象數(shù)據(jù)類型。接口提供了讓我們對集合中所表示的內(nèi)容進行單獨操作的可能戴尸。
2.實現(xiàn):也就是集合框架中接口的具體實現(xiàn)。實際它們就是那些可復(fù)用的數(shù)據(jù)結(jié)構(gòu)冤狡。
3.算法:在一個實現(xiàn)了某個集合框架中的接口的對象身上完成某種有用的計算的方法孙蒙,例如查找、排序等悲雳。這些算法通常是多態(tài)的挎峦,因為相同的方法可以在同一個接口被多個類實現(xiàn)時有不同的表現(xiàn)。集合框架的優(yōu)點:
1.減少編程工作合瓢。
2.增加編程速度與質(zhì)量浑测。
3.減少了學(xué)習和應(yīng)用新的API的工作。
4.減少了新的API的工作。
5.促進了軟件的應(yīng)用迁央。-
API接口
1.collection接口是所有集合接口的根接口掷匠,它聲明的抽象方法是通用的集合操作。
2.Set是不能包含重復(fù)元素的集合岖圈。Set集合的元素位置往往并不確定讹语,因而不能通過位置存取元素。
3.List的元素按照一定的次序排列蜂科,被稱為序列顽决。list集合的元素可以重復(fù)。
4.Queue集合用于表示隊列导匣,經(jīng)常按照某種原則進行元素從插入和訪問才菠。
5.Deque 該接口的集合類支持從隊列兩端進行元素插入和刪除。
5.Map管理一批鍵值對(key-value pairs)贡定。 Iterator(迭代器)
迭代器是一種設(shè)計模式赋访,它是一個對象,它可以遍歷并選擇序列中的對象缓待,而開發(fā)人員不需要了解該序列的底層結(jié)構(gòu)蚓耽。迭代器通常被稱為“輕量級”對象,因為創(chuàng)建它的代價小旋炒。
Java中的Iterator功能比較簡單步悠,并且只能單向移動:
(1) 使用方法iterator()要求容器返回一個Iterator。第一次調(diào)用Iterator的next()方法時瘫镇,它返回序列的第一個元素鼎兽。注意:iterator()方法是java.lang.Iterable接口,被Collection繼承。
(2) 使用next()獲得序列中的下一個元素铣除。
(3) 使用hasNext()檢查序列中是否還有元素接奈。
(4) 使用remove()將迭代器新返回的元素刪除。
Iterator是Java迭代器最簡單的實現(xiàn)通孽,為List設(shè)計的ListIterator具有更多的功能,它可以從兩個方向遍歷List睁壁,也可以從List中插入和刪除元素背苦。ArrayList
ArrayList 是一個數(shù)組隊列,相當于 動態(tài)數(shù)組潘明。與Java中的數(shù)組相比行剂,它的容量能動態(tài)增長。它繼承于AbstractList钳降,實現(xiàn)了List, RandomAccess, Cloneable, java.io.Serializable這些接口厚宰。
ArrayList 繼承了AbstractList,實現(xiàn)了List。它是一個數(shù)組隊列铲觉,提供了相關(guān)的添加澈蝙、刪除、修改撵幽、遍歷等功能灯荧。
ArrayList 實現(xiàn)了RandmoAccess接口,即提供了隨機訪問功能盐杂。RandmoAccess是java中用來被List實現(xiàn)逗载,為List提供快速訪問功能的。在ArrayList中链烈,我們即可以通過元素的序號快速獲取元素對象厉斟;這就是快速隨機訪問。稍后强衡,我們會比較List的“快速隨機訪問”和“通過Iterator迭代器訪問”的效率擦秽。
ArrayList 實現(xiàn)了Cloneable接口,即覆蓋了函數(shù)clone()食侮,能被克隆号涯。
ArrayList 實現(xiàn)java.io.Serializable接口,這意味著ArrayList支持序列化锯七,能通過序列化去傳輸链快。和Vector不同,ArrayList中的操作不是線程安全的眉尸。所以域蜗,建議在單線程中才使用ArrayList,而在多線程中可以選擇Vector或者CopyOnWriteArrayList噪猾。LinkedList與ArrayList的區(qū)別
1.ArrayList是實現(xiàn)了基于動態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu)霉祸,LinkedList基于鏈表的數(shù)據(jù)結(jié)構(gòu)。
2.ArrayList對隨機訪問性能很好,但進行大量插入,刪除操作,性能很差, 因為操作之后后續(xù)元素需要移動袱蜡。
3.LinkedList功能與ArrayList,Vector相同,內(nèi)部是依賴雙鏈表實現(xiàn)的, 因此有很好的插入和刪除性能丝蹭,只需要改變引用指向,但隨機訪問元素的性能很差 。