国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java集合框架和泛型機制

2019-11-06 07:32:33
字體:
來源:轉載
供稿:網友

第11章 java集合框架和泛型機制

1、概念 JDK API在java.util包中設計了一組專門用來存儲其它對象的類,這組類被稱為對象容器類,簡稱容器類,這組類和接口的設計結構也被稱為集合框架。 Collection接口有一個超級接口:Iterator(用于遍歷); Collection接口的子接口常用的有:List 和 Set;   List,有序有重復;Set,無序無重復。  元素:元素即對象(數據)的引用  重復:調用equals方法進行相等判斷  有序:存放順序即輸出的順序 Map接口,用于維護鍵/值對。 常用工具類:Collections

2、Iterator接口 所有實現了Collection接口的集合類都有一個 iterator()方法用以返回一人實現了Iterator接口的對象。 Iterator對象稱作迭代器,用以方便的實現對集合內元素的遍歷操作。 Iterator接口中定義的方法:  boolean hashNext();  Object next();  void remove();

3、Set接口(無序無重復) Set接口沒有提供Collection 接口額外的方法,但實現Set接口的集合類中的元素是不可重復的。 Set的實現類主要有:HashSet及其子類 LinkedHashSet 

4、HashSet 特點:檢索數據的效率比較高。 HashSet:不保存元素的加入順序,它根據元素的哈希碼進行存放,所以取出這個元素時也可以根據哈希碼快速找到。 注意:在添加自定義類對象到HashSet時,自定義類必須重寫hashCode和equals方法進行對象重復的判斷。 HashSet通過hashCode()方法和equals()方法實現對數據相等的判斷。 可以往HashSet中添加null值,也只能添加一次相同的null元素。

5、LinkedHashSet 特點:采用雙向表鏈接的方式進行數據的存儲。 因為此特點,LinkedHashSet對元素的插入和刪除效率比較高,對于檢索效率要較低。 LinkedHashSet在存放元素時,會記錄每個元素的HashCode值,輸出時會根據HashCode值的順序(先進先出)進行輸出,但是LinkedHashSet在底層對于數據的存放和HashSet原理一致。 

6、List接口(有序有重復) List的實現類主要有:Vector、 ArrayList、 LinkedList 實現List接口的集合類中的元素是有序的,且允許重復。 List集合中的元素都對應一個整數型的序號記載其在集合中的位置,可以根據序號存取集合中的元素。   

7、ArrayList ArrayList底層通過動態數組來實現對元素的存儲, ArrayList類能夠自動增加或者減小其本身存儲數據的大小, 當目前數據的大小超過了ArrayList目前存放的大小,這時ArrayList會自動進行大小的調整。 ArrayList 存儲元素時會保存元素順序。 優點:  對于使用索引取出元素有較好的效率  它使用索引來快速定位對象 缺點:  元素做刪除或插入速度較慢  因為使用了數組,需要移動后面的元素以調整索引順序。  

8.LinkedList LinkedList是使用雙向鏈表實現的集合。 LinkedList新增了一些插入、刪除的方法。   如:addFirst()、addLast()、 優點:  對頻繁的插入或刪除元素有較好的效率  

9.Vector vector和ArrayList大多數方法和功能都類似,實現原理基本一致 vector是線程安全的 特點:Vector對于檢索效率也比較高,但由于線程問題,ArrayList檢索的效率高于Vector vector常用方法:addElement(Object obj)、 insertElementAt(Object obj, int index)、…… 

10、Map接口 Map常用實現類:HashMap及子類LinkedHashMap、PRoperties Map實現類中存儲的“鍵-值”映射對 通過鍵來唯一標識。Map底層的“鍵”是用Set來存放的,因此是無序無重復的。 

11、HashMap 基于哈希表的Map接口的實現,它是使用頻率最高的一個容器,提供所有可選的映射操作,它內部對“鍵”用Set進行散列存放。所以根據“鍵”去取“值”的效果很高。并且允許使用 null 值和null 鍵,但它不保證映射順序。 1.HashMap底層通過Set對鍵進行散列存放。 2.對于HashMap中的鍵要求要重寫hashCode和equals方法 3.HashMap中允許鍵值都為null 4.HashMap映射的順序沒有保證 5.常用String作為Map的“鍵”。 6.HashMap檢索數據效率比較高 7.直接輸出Map對象時,以大括號擴住,并且以鍵=值的形式輸出 

12.LinkedHashMap LinkedHashMap是HashMap的子類 特點:對插入刪除操作效率高  輸出元素有一定的順序(按照添加的順序進行輸出)  

13.HashTable HashTabel和HashMap區別:  1.HashTable是線程安全的  2.HashTable不允許給鍵值對添加null值  

14.Properties Properties類是HashTable的子類,表示了一個持久屬性集。它可保存在流中或人流中加載,屬性列表中每個鍵及其對應值都是一個字符串。 在屬性文件中注釋采用# 使用步驟:  1.獲取文件流   InputStream iStream=Thread.currentThread().getContextClassLoader().getResourceAsStream("名稱.properties");  2.創建Properties對象   Properties pro=new Properties();  3.加載流對象到Properties對象中,調用load方法可能會發生IOException   pro.load(iStream);  4.通過調用getProperty("key") 獲取數據.  

15、集合類的選擇 存放要求:  無序:Set  不能重復  有序:List  允許重復  “Key-value”對 Map 讀寫要求:  Hash* 兩者都高 HashCode  Array* 讀快寫慢  Linked* 讀慢改快  Tree* 加入元素可排序使用  

16.Collections集合幫助類 java.util.Collections類是操作集合的工具類,提供了一些靜態方法實現了基于集合的一些常用算法  void sort(List list) 根據元素的自然順序 對指定List列表按升序進行排序。List列表中的所有元素都必須實現 Comparable 接口。  void shuffle(List list) 對List列表內的元素進行隨機排列  void reverse(List list) 對List列表內的元素進行反轉  void copy(List dest, List src) 將src列表內的元素復制到dest列表中  List synchronizedList(List list)  返回指定列表支持的同步(線程安全的)列表 

17.泛型 泛型,就是在定義(類、方法、形式參數、成員變量等)的時候,指定它為通用類型,也就是數據類型可以是任意的類型。具體調用的時候,要將通過類型轉換成指定的類型來使用。 聲明泛型類對象語法:  類名<數據類型> 對象名稱=new 類名<數據類型>(); 泛型使用:  1:消除類型轉換  2:自動解包裝或包裝  3:限制泛型中類型參數的范圍    <?> 通用類型    <? extends Number> 只允許Number以及Number的子類來引用    <? super Number> 只允許Number以及Number的父類引用  4:泛型方法    <T>通用類型    <T extends Number> 只允許Number以及Number的子類來引用    <T super Number> 只允許Number以及Number的父類引用    <T super Number&Comparable> 只允許Number以及Number的父類且實現了Comparable接口的實現類引用  5.泛型類    在類的定義中添加一個泛型參數列表,可以將類泛型化  6.注意   靜態方法中不能使用類的泛型,因為泛型類中的泛型在創建類的對象時被替換為確定類型。    在Java中沒有類型的變量或對象是不允許直接訪問的。   不要創建泛型類的對象,因為泛型類可能是一個接口或抽象類。   不能在catch 子句中使用泛型,因為若try子句拋出是已檢查異常,編譯器無法確定catch能否捕獲。 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鄂托克前旗| 瑞昌市| 云和县| 宽城| 武鸣县| 郸城县| 左贡县| 铜山县| 志丹县| 台东县| 平湖市| 宜兰市| 柘城县| 连山| 特克斯县| 外汇| 江都市| 财经| 惠州市| 松原市| 墨脱县| 奉贤区| 隆安县| 元江| 邢台市| 诸城市| 乐都县| 盖州市| 水城县| 石林| 宜丰县| 朝阳县| 安宁市| 伊通| 大竹县| 乳山市| 白水县| 容城县| 桐乡市| 康平县| 南安市|