999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

強大的Collection集合框架

2017-05-04 18:26:00陳浩鑫劉艷華張桂娟
藝術科技 2016年12期

陳浩鑫+劉艷華+張桂娟

摘 要:Java,是由Sun公司于1995年推出的編程語言。在Java語言中,不管是大編程項目也好,小編程項目也好,為了達到方便的目的,我們都要用到集合框架。集合框架是為表示和操作集合而規定的一種統一的標準的體系結構。任何集合框架都包含三大塊內容:對外的接口、接口的實現和對集合運算的算法。

關鍵詞:集合框架;集合;Collection

在Java中,Collection集合接口是Collection層次結構中的根接口。Collection表示一組對象,這些對象也稱為collection的元素。一些Collection是有序、允許有重復元素的,而另一些則是無序的、不允許有重復元素的。由于JDK不提供此接口的任何直接實現,因此它提供更具體的子接口來進行集合的實現,如Set和List。此接口通常用來傳遞Collection,并在需要最大普遍性的地方操作這些Collection。所有通用的Collection實現類(通常通過它的一個子接口間接實現Collection)應該提供兩個“標準”構造方法:一個是無參構造方法,用于創建空collection;另一個是帶有Collection類型單參數的構造方法,用于創建一個具有與其參數相同元素新的Collection。

如果仔細劃分的話,Collection接口下的兩個子接口list和set又具有幾個我們經常使用的具體實現類。在list接口下有底層是鏈表結構的LinkedList,有底層是數組的ArrayList、Vector,為什么底層是數組的會有兩個?因為他們其在功能上大體沒有區別。但ArrayList是線程不安全的,而vector是線程的安全的,當然了,在Java中,線程安全就代表著程序的完整度高一些,運行速度慢一些,所以基于數組的list集合我們一般采用ArrayList集合。而在Set中,我們又有基于Hash算法的HashSet和基于二叉樹算法的TreeSet。在Map集合中,我們一般常用到的就是HashMap集合。今天,我們重點介紹Collection集合。

在集合框架中,我們要如何遍歷Collection中的每一個元素?不論Collection的實際類型如何,它都支持一個iterator()的方法,該方法返回一個迭代子,使用該迭代子即可逐一訪問Collection中每一個元素。典型的用法如下:

Iterator it=collection.iterator();//獲得一個迭代元素

while(it.hasNext()) {

Object obj=it.next();//得到下一個元素

}

下面,筆者將就以上幾個集合作為分類為大家簡略地介紹一下集合。

List接口:

List是有序的,允許重復的Colllection集合的子接口,除了具有Collection接口必備的iterator()方法外,List接口還可以使用Collections類中對集合操作的一些方法,如add(int index,Element)將指定的元素插入此列表中的指定位置。

remove(int index)移除此列表中指定位置上的元素等方法。

實現List接口的常用類有LinkedList、ArrayList。

LinkedList類:

LinkedList類實現了List接口,允許集合中存在null。此外,LinkedList還具有獨特的get()、set()等方法,這些獨特的操作方法使LinkedList可被用作或看作一個環狀的鏈表,我們一般將其稱為雙向循環鏈表。

但值得我們注意LinkedList的是,其沒有同步方法,如果多個線程同時訪問一個List,則必須自己實現訪問同步。一種解決方法是在創建List時構造一個同步的List并且將其上鎖,保證數據的安全性:

List list=Collections.synchronizedList(new LinkedList(...));

ArrayList類:

ArrayList的底層由數組完成,因此它具有數組的一些特性,即增刪慢、查詢快。每個ArrayList實例都有一個容量,即用于存儲元素的數組大小。這個容量可隨著不斷添加新元素而增加,而在這方面,數組就沒有集合具有優勢,數組的擴容需要代碼完成,集合是隨著數據的插入而自動擴容,隨著數據的消失而自動消失。

Set接口:

與List不同的是,在Set中的對象元素不能重復,也就是說,你不能把同樣的東西兩次放入同一個Set容器中。它的常用具體實現有HashSet和TreeSet類。HashSet能快速定位一個元素,但是你放到HashSet中的對象需要實現hashCode()方法,它使用了數據庫中的哈希算法。而TreeSet則將放入其中的元素按序存放,這就要求你放入其中的對象是可排序的,這就用到了集合框架提供的另外兩個實用類Comparable和Comparator。一個類是可排序的,當實現Comparable接口時要重寫接口中的Compareto方法,要么實現Comparator接口,如果多個類具有相同的排序算法,那就不需要在每分別重復定義相同的排序算法,只要實現Comparator接口即可。集合框架中還有兩個很實用的公用類:Collections和Arrays。Collections提供了對一個Collection容器進行諸如排序、復制、查找和填充等一些非常有用的方法,以供Set集合的使用。

參考文獻:

[1] Stuart Reges(美),Marty Stepp . Java程序設計教程大學[D].陳志,譯.機械工業出版社,2009.

[2] Y.Daniel Liang(美) . Java語言程序設計[M].機械工業出版社,2008.

[3] Cay S(美) . Horstmann Gary Cornell . Java核心技術[M].人民郵電出版社,2013.

主站蜘蛛池模板: 国产成人综合久久精品下载| 国产白浆视频| 毛片视频网| 日韩一级二级三级| 久久久久亚洲AV成人网站软件| 91精品网站| 亚洲欧美日本国产综合在线| 久99久热只有精品国产15| 亚洲欧美不卡视频| 亚州AV秘 一区二区三区| 国产xxxxx免费视频| 激情综合五月网| 狠狠色狠狠色综合久久第一次| 老熟妇喷水一区二区三区| 亚洲Av综合日韩精品久久久| 国产精品第| 97视频精品全国免费观看| 制服丝袜国产精品| 日韩激情成人| 亚洲无码精品在线播放| 中文字幕免费播放| 国产喷水视频| 综合成人国产| 国产sm重味一区二区三区| 亚洲人成网站18禁动漫无码| 波多野结衣久久高清免费| 婷婷色丁香综合激情| 久久久久免费精品国产| 国产区免费精品视频| 欧美人人干| 亚洲国产成人久久77| 成人在线第一页| 在线中文字幕日韩| 国产精品女主播| 老汉色老汉首页a亚洲| 美女啪啪无遮挡| 综合色区亚洲熟妇在线| 91精品国产自产在线观看| 欧美一区二区三区不卡免费| 女人18一级毛片免费观看| 九九这里只有精品视频| 日韩乱码免费一区二区三区| 国模私拍一区二区| 国产电话自拍伊人| 91在线一9|永久视频在线| 国产精品无码久久久久AV| 成人福利在线观看| 久久免费视频6| 国产成人一级| 国产91丝袜在线观看| 人妻免费无码不卡视频| 亚洲视频免| 国内精品九九久久久精品| 久久国产精品夜色| 免费观看亚洲人成网站| 伊人久久大香线蕉aⅴ色| 国产免费精彩视频| 精品成人免费自拍视频| 亚洲一区精品视频在线| 69综合网| 国产在线精品人成导航| 成人午夜网址| 精品无码专区亚洲| 精品国产成人三级在线观看| 亚洲成aⅴ人片在线影院八| 国产成人高精品免费视频| 99青青青精品视频在线| 九九九九热精品视频| 日本一区二区三区精品AⅤ| 欧美在线一二区| 97国产成人无码精品久久久| 亚洲国产精品美女| 精品第一国产综合精品Aⅴ| 亚洲色偷偷偷鲁综合| 久久香蕉国产线看观看精品蕉| 亚洲欧美国产视频| 日韩免费成人| 欧美福利在线观看| 久久精品无码一区二区日韩免费| 亚洲色图欧美视频| 亚洲伊人天堂| 国产AV无码专区亚洲A∨毛片|