




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Java中集合框架: Collection接口和Map接口,集合框架圖,。集合框架中的核心接口是:List接口、Set接口和Map接口。List接口和Set接口都是繼承了Collection接口的,而Map接口是單獨存在的。,我們學了知識是拿來應用的,那么對于初學者來說怎樣才能很好地應用集合框架呢!給我感受最深的,也是最重要的,那就是要知道集合框架中各個接口和實現(xiàn)類的特征和他們的方法。如果知道了他們的特征和方法,那我我們在應用中就能得心應手了。好,下面就讓我們一起學習集合框架中幾個常用的接口和實現(xiàn)類的特征:,List:List是一個接口,它繼承于Collection接口。它定義了一個允許有重復
2、項的有序集合。那么,它的特征就是:允許有重復項,有序。 Set:Set是一個接口,它也是繼承于Collection接口。它不允許集合中存在重復項,無序。每個具體的 Set 實現(xiàn)類依賴添加的對象的 equals()方法來檢查獨一性。,Map:Map也是一個接口,Map接口不是Collection接口的繼承。Map接口用于維護鍵/值對(key/value)。它描述了從不重復的鍵到值的映射。,重要的實現(xiàn)類: 1 ArrayList :ArrayList是一個類,他實現(xiàn)了List接口,它封裝了一個動態(tài)再分配的Object數(shù)組。 它的特點是:有序,可以重復的數(shù)組。 ArrayList類中最常用的方法有:
3、add(),get(),remove(),size()等方法。 例如: List list = new ArrayList();/實例化一個對象 list.add(user);/在list中添加元素,2 LinkedList:LinkedList也是一個類,它實現(xiàn)了List接口,它是一個雙向鏈表結(jié)構(gòu)的集合。 LinkedList類中最常用的方法有:add(),get(),remove(),size(),clear()等方法。這些方法在javaAPI中都有詳細說明。,總結(jié): 1 ArrayList、 LinkedList兩個類都實現(xiàn)了 List接口 2 ArrayList的特點是有序可以重復的,
4、LinkedList是一個雙向鏈表結(jié)構(gòu)的。 3 特點來選擇:對這個集合經(jīng)常進行查找操作,那么你最好用ArrayList; 經(jīng)常增加,刪除操作,那么最好用LinkedList來存放。這些都是根據(jù)他的一個特點來選擇應用的。,ArrayList = Object + 線性表操作(增刪改查) StringBuilder = char + 操作(增刪改查) ArrayList(1.2以后新的) 是使用變長數(shù)組算法實現(xiàn)的 List (線性表方法) Vector(1.0) 是使用變長數(shù)組算法實現(xiàn)是 List 矢量 向量 LinkedList 是采用雙向循環(huán)鏈表實現(xiàn)的List,List 集合的實現(xiàn) 1 Lin
5、kedList 采用雙向循環(huán)鏈表實現(xiàn) 2 ArrayList 變長數(shù)組算法實現(xiàn) 新的 快 非線程安全 3 Vector 變長數(shù)組算法實現(xiàn) 早期提供 慢 線程安全,Map 1 HashMap 新 2 Hashtable 舊 (1.2以前) 散列表概念 1 容量: 散列表中散列數(shù)組大小. 2 散列運算: key-散列值(散列數(shù)組下標)的算法, 如: mm.hashCode()%10-8 3 散列桶: 散列值相同的元素的線性集合 4 加載因子: 就是散列數(shù)組加載率, 一般小于75%性能比較理想 就是:元素數(shù)量/散列數(shù)組大小, 如: 7/10=70% 5 散列查找: 根據(jù)Key計算散列值, 根據(jù)散列值
6、(下標找到散列桶,在散列桶中順序比較Key, 如果一樣, 就返回value 6 散列表中Key不同, Value可以重復,HashMap = Entry(key:value)(散列表)+散列算法(方法)(get/put) ArrayList = Object + 線性算法(方法) LinkedList = 雙向循環(huán)鏈表 + 線性操作(方法) StringBuilder = char + 數(shù)組的操作,HashMap:HashMap是一個類,它實現(xiàn)了Map這個接口。中文也叫散列表。它的特點就是:鍵值對的映射關(guān)系。一個Key對應一個Value。 例如:我們在做一個簡單的ATM實現(xiàn)的時候,一個卡號對應
7、一個用戶,每一張卡的卡號是唯一的,而一個用戶可以有幾張卡。這種情況,我們就可以用HashMap來存放數(shù)據(jù)了。,HashMap(關(guān)鍵字:值), 關(guān)鍵字key是唯一不重復的, 查找表 1) key可以是任何對象, Value可以任何對象, 2) key:value 成對的放置到集合中 3) 重復的key算一個, 重復添加是替換操作 4) 根據(jù)key的散列值計算散列表, 元素按照散列值(不可見)排序 5) 默認的容量: 16 默認加載因子(加載率) 0.75 6) 根據(jù)key檢索查找value值 7) 用于查找場合, 可以提高根據(jù)key查找效率,put(Object key,Object value
8、):根據(jù)給定key值存放value值 get(Object key):根據(jù)給定的key值查找并返回對應的value值若沒有找到對應的key,返回null clear():清空散列表,containsKey(Object key):查看當前散列表中是否包含給定的key值 containsValue(Object value):查看當前散列表中是否包含給定的value值 isEmpty():散列表有無元素 keySet():返回當前散列表中所有的key(以 Set集合返回) remove(Object key):根據(jù)key值刪除這一項 size():返回當前散列表中的元素總數(shù),例如: HashMa
9、p map = new HashMap();/實例化一個HashMap對象 map.put();/在map集合中添加元素,8) HashMap VS Hashtable A HashMap 新, 非線程安全, 不檢查鎖, 快 B Hashtable 舊 (1.2以前) 線程安全, 檢查鎖, 慢一點,HashMap中常用的方法有:put(),get(),clear(),containsKey()等方法。 例如: HashMap map = new HashMap();/實例化一個HashMap對象 map.put();/在map集合中添加元素,Java泛型簡介 1) Java5 以后提出的語法現(xiàn)
10、象, 在編譯期間期檢查的類型約束. 運行期不檢查泛型! 2) 可以用來約束類中元素的類型,Java泛型簡介 1) Java5 以后提出的語法現(xiàn)象, 在編譯期間期檢查的類型約束. 運行期不檢查泛型! 2) 可以用來約束類中元素的類型,集合的迭代Iterate(遍歷算法)(模仿了數(shù)雞蛋的方式) 1) 迭代操作: 播放列表 的 全部播放, 將撲克牌全部發(fā)放 2) java使用Iterator 接口描述了迭代模式操作 Iterator 中的方法模式化設計, 專門配合while循環(huán)操作,集合的迭代Iterate(遍歷算法)(模仿了數(shù)雞蛋的方式) 1) 迭代操作: 播放列表 的 全部播放, 將撲克牌全部發(fā)
11、放 2) java使用Iterator 接口描述了迭代模式操作 Iterator 中的方法模式化設計, 專門配合while循環(huán)操作,3) Iterator 的實例可以從集合對象獲得, 是這個集合的一個元素序列 視圖, 默認包含一個操作游標, 在第一個元素之前, hasNext() 方法 可以檢查游標是否有下一個元素, next() 方法移動游標到下一個元素 并且返回這個元素引用. 使用while配合這個兩個方法, 可以迭代處理 集合的所有元素,4) 迭代時候可以使用迭代器remove() 方法刪除剛剛迭代的元素( remove() 一定要在next()方法后執(zhí)行,刪除的是next()返回的元素
12、) 在迭代過程中, 不能使用集合方法(add, remove, set) 更改集合 元素,Collections 集合的工具類, Arrays 數(shù)組的工具類 1) 排序(sort(), 二分查找(binarySearch(), 打亂(shuffle(), 填充(fill()等操作 例如: Collections .sort(); Collection和Collections Collections:是集合的工具類 Collection:是集合的接口,它有兩個子接口分別為:List和Set,比較大小 1) Comparable 可以比較的 用于類實現(xiàn), 實現(xiàn)這個接口表示: 這個 類的實例可以比較
13、大小的. 可以進行自然排序. CompareTo()返回正數(shù)表示大,返回負數(shù)表示小,返回0表示相等Comparable的實現(xiàn)必須與equals() 的結(jié)果一致, 就是相等的對象比較結(jié)果一定是0! 2) Comparator 比較工具, 用于臨時定義比較規(guī)則, 不是默認比較規(guī)則,Collections的sort方法默認使用集合中元素的compareTo()方法比較 * 后進行排序,若想改變規(guī)則,可以使用Collections的sort的重載方法, * 傳入一個比較器,來使用臨時比較規(guī)則進行排序( 用Comparator比較工具 ),java中的包裝類 1) 包裝類可以把基本類型包裝為對象類型 2
14、) 有八種包裝類 int Integer long Long byte Byte short Short float Float double Double boolean Boolean char Character,3 包裝類提供了 對應數(shù)據(jù)類型的工具方法 Integer.toHexString() Integer.toString(int) Integer.toBinaryString() Integer.parseInt(String) 3f-int Integer.parstInt(String, int) 2.718 - 2.718 Double.parseDouble(Strin
15、g str);,應該將int這個基本類型轉(zhuǎn)換為一個對象類型(頂級父類是Object) 使用簡單類型對應的包裝類的構(gòu)造方法創(chuàng)建一個對應的包裝類對象 int a = 10; Integer num = new Integer(a);/將基本類型轉(zhuǎn)為對應的包裝類 ArrayList al = new ArrayList(); al.add(num); 將基本類型數(shù)據(jù)轉(zhuǎn)變?yōu)槠浒b類的過程稱之為: 裝箱 將包裝類的對象轉(zhuǎn)變?yōu)榛绢愋头Q之為:拆箱,自動包裝(auto boxing / unboxing)(java5 以后可以): Integer i = 2;/ i=new Integer(2); Obje
16、ct o = 3.5; System.out.println(o instanceof Double); /true int a = i+1;/ a = Value() + 1;,注意 1 包裝類是final的類 2 包裝類對象是不變的, 與字符串類似(不變模式) Integer a = 1; Integer b = 2; a = a+b; /a = new Integer(Value() + Value() 3 包裝類覆蓋了 toString equals hashCode compareTo,1) 集合復制, 默認的復制規(guī)則是淺表(淺層)復制 A clone(
17、) 方法 B 使用復制構(gòu)造器! Map map = new HashMap(); Map map2 = new HashMap(map); List list1 = new ArrayList(); List list2 = new LinkedList(list1); 注意:集合Collection不能直接轉(zhuǎn)換為Map,2) 同步化(線程安全的) List list = new ArrayList(); /synchronizedList 可以將非線程安全的list包裝為線程安全的 list = Collections.synchronizedList(list); 轉(zhuǎn)換以后就相當于 Vec
18、tor HashMap map = new HashMap(); /synchronizedMap 可以將非線程安全的map包裝為線程安全的 map = Collections.synchronizedMap(map);,3) 數(shù)組與集合的轉(zhuǎn)換 a 數(shù)組轉(zhuǎn)List(只讀的) String names = A,B,C; List list = Arrays.asList(names);/只讀list list = new ArrayList(list);/復制為全功能List Set set = new HashSet(list);/復制為Set集合,b 集合轉(zhuǎn)數(shù)組 Object ary1 = list.toArray();/集合轉(zhuǎn)Object String ary2 = (String) list.toArray(new String);/集合轉(zhuǎn)制定類型數(shù)組,5) Map的迭代, Map 是 Key:Value 組成的集合 A 對key:value 進行迭代 map.entrySet();返回一個Set B 對Key進行迭代 map.keySet();返回一個Set C 對Value進行迭代 map.values();返回Collection,什么
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國微特電機行業(yè)發(fā)展前景預測及投資策略研究報告
- 2024年中國黑龍江省農(nóng)藥行業(yè)調(diào)查研究報告
- 安全事故應急救援預案內(nèi)容
- 2025年中國平板電視行業(yè)市場深度分析及發(fā)展前景預測報告
- 電腦排針項目投資可行性研究分析報告(2024-2030版)
- 樹脂中試裝置融資投資立項項目可行性研究報告(齊魯咨詢)
- 建筑企業(yè)安全生產(chǎn)例會制度
- 燃氣安全生產(chǎn)檢查表
- 消防安全教育方案
- 銀行副行長年度工作總結(jié)
- 赤峰市翁牛特旗招聘社區(qū)工作者筆試真題2024
- 電商客服人員管理制度
- 山西省2025年中考語文真題(含答案)
- 航空航天技術(shù)知識要點梳理
- 滬教七年級 (下) Unit 7 Role models of our time 重點復習課件
- 采購原材料管理制度
- 染缸操作規(guī)范
- 可下載打印的公司章程
- 1p120新產(chǎn)品制造可行性報告
- 工程結(jié)算審核定案表(模板)
- 開工前安全安全生產(chǎn)條件審查表
評論
0/150
提交評論