最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java集合繼承關(guān)系圖分享

 更新時間:2017年11月02日 09:30:34   作者:kosamino  
這篇文章主要為大家詳細(xì)介紹了java集合繼承關(guān)系圖,具有一定的參考價值,感興趣的小伙伴們可以參考一下

  面向?qū)ο笳Z言對事物的體現(xiàn)都是以對象的形式,所以為了方便對多個對象的操作,就對對象進(jìn)行存儲,集合就是存儲對象最常用的一種方式。

  數(shù)組雖然也可以存儲對象,但長度是固定的;集合長度是可變的,數(shù)組中可以存儲基本數(shù)據(jù)類型,集合只能存儲對象。

  集合類的特點(diǎn):集合只用于存儲對象,集合長度是可變的,集合可以存儲不同類型的對象。

 

  

  上述類圖中,實(shí)線邊框的是實(shí)現(xiàn)類,比如ArrayList,LinkedList,HashMap等,折線邊框的是抽象類,比如AbstractCollection,AbstractList,AbstractMap等,而點(diǎn)線邊框的是接口,比如Collection,Iterator,List等。

1、Iterator接口

  Iterator接口,這是一個用于遍歷集合中元素的接口,主要包含hashNext(),next(),remove()三種方法。它的一個子接口LinkedIterator在它的基礎(chǔ)上又添加了三種方法,分別是add(),previous(),hasPrevious()。也就是說如果是先Iterator接口,那么在遍歷集合中元素的時候,只能往后遍歷,被遍歷后的元素不會在遍歷到,通常無序集合實(shí)現(xiàn)的都是這個接口,比如HashSet,HashMap;而那些元素有序的集合,實(shí)現(xiàn)的一般都是LinkedIterator接口,實(shí)現(xiàn)這個接口的集合可以雙向遍歷,既可以通過next()訪問下一個元素,又可以通過previous()訪問前一個元素,比如ArrayList。

  抽象類的使用。如果要自己實(shí)現(xiàn)一個集合類,去實(shí)現(xiàn)那些抽象的接口會非常麻煩,工作量很大。這個時候就可以使用抽象類,這些抽象類中給我們提供了許多現(xiàn)成的實(shí)現(xiàn),我們只需要根據(jù)自己的需求重寫一些方法或者添加一些方法就可以實(shí)現(xiàn)自己需要的集合類,工作流昂大大降低。

2、Collection (集合的最大接口)繼承關(guān)系

  ——List 可以存放重復(fù)的內(nèi)容

  ——Set  不能存放重復(fù)的內(nèi)容,所以的重復(fù)內(nèi)容靠hashCode()和equals()兩個方法區(qū)分

  ——Queue  隊(duì)列接口

  ——SortedSet  可以對集合中的數(shù)據(jù)進(jìn)行排序

  Collection定義了集合框架的共性功能。

  add方法的參數(shù)類型是Object。以便于接收任意類型對象。

  集合中存儲的都是對象的引用(地址)。

3、List的常用子類

  特有方法。凡是可以操作角標(biāo)的方法都是該體系特有的方法。

  ——ArrayList   線程不安全,查詢速度快

  ——Vector  線程安全,但速度慢,已被ArrayList替代

  ——LinkedList  鏈表結(jié)果,增刪速度快

4、Set接口

  Set:元素是無序(存入和取出的順序不一定一致),元素不可以重復(fù)。
  ——HashSet:底層數(shù)據(jù)結(jié)構(gòu)是哈希表。是線程不安全的。不同步。
    HashSet是如何保證元素唯一性的呢?
    是通過元素的兩個方法,hashCode和equals來完成。
    如果元素的HashCode值相同,才會判斷equals是否為true。
    如果元素的hashcode值不同,不會調(diào)用equals。

    注意,對于判斷元素是否存在,以及刪除等操作,依賴的方法是元素的hashcode和equals方法。

  ——TreeSet:

    有序的存放:TreeSet  線程不安全,可以對Set集合中的元素進(jìn)行排序

    通過compareTo或者compare方法來保證元素的唯一性,元素以二叉樹的形式存放。

5、Object類

  在實(shí)際開發(fā)中經(jīng)常會碰到區(qū)分同一對象的問題,一個完整的類最好覆寫Object類的hashCode()、equals()、toString()三個方法。

6、集合的輸出

  ——4種常見的輸出方式

  ——Iterator: 迭代輸出,使用最多的輸出方式

  ——ListIterator: Iterator的子接口,專門用于輸出List中的內(nèi)容

  ——Enumeration

  ——foreach

  在迭代時,不可以通過集合對象的方法操作集合中的元素,因?yàn)闀l(fā)生ConcurrentModificationException異常。所以,在迭代器時,只能用迭代器的放過操作元素,可是Iterator方法是有限的,只能對元素進(jìn)行判斷,取出,刪除的操作,如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator。該接口只能通過List集合的listIterator方法獲取。

7、Map接口

  Correction、Set、List接口都屬于單值的操作,而Map中的每個元素都使用key——>value的形式存儲在集合中。

  Map集合:該集合存儲鍵值對。一對一對往里存。而且要保證鍵的唯一性。

8、Map接口的常用子類

  Map
  ——HashMap:底層是哈希表數(shù)據(jù)結(jié)構(gòu),允許使用 null 值和 null 鍵,該集合是不同步的。將hashtable替代,jdk1.2.效率高。
  ——TreeMap:底層是二叉樹數(shù)據(jù)結(jié)構(gòu)。線程不同步??梢杂糜诮omap集合中的鍵進(jìn)行排序。

9、集合工具類

  Collections:集合框架的工具類。里面定義的都是靜態(tài)方法。

  Collections和Collection有什么區(qū)別?
    Collection是集合框架中的一個頂層接口,它里面定義了單列集合的共性方法。
      它有兩個常用的子接口,
      ——List:對元素都有定義索引。有序的。可以重復(fù)元素。
      ——Set:不可以重復(fù)元素。無序。

    Collections是集合框架中的一個工具類。該類中的方法都是靜態(tài)的。
      提供的方法中有可以對list集合進(jìn)行排序,二分查找等方法。
      通常常用的集合都是線程不安全的。因?yàn)橐岣咝省?br />       如果多線程操作這些集合時,可以通過該工具類中的同步方法,將線程不安全的集合,轉(zhuǎn)換成安全的。

10.比較  

  

11.總結(jié):

  List:add/remove/get/set。

    1、ArrayList:其實(shí)就是數(shù)組,容量一大,頻繁增刪就是噩夢,適合隨機(jī)查找;

    2、LinkedList:增加了push/[pop|remove|pull],其實(shí)都是removeFirst;

    3、Vector:歷史遺留產(chǎn)物,同步版的ArrayList,代碼和ArrayList太像;

    4、Stack:繼承自Vector。Java里其實(shí)沒有純粹的Stack,可以自己實(shí)現(xiàn),用組合的方式,封裝一下LinkedList即可;

    5、Queue:本來是單獨(dú)的一類,不過在SUN的JDK里就是用LinkedList來提供這個功能的,主要方法是offer/pull/peek,因此歸到這里呢。

  Set:add/remove。可以用迭代器或者轉(zhuǎn)換成list。

    1、HashSet:內(nèi)部采用HashMap實(shí)現(xiàn)的;

    2、LinkedHashSet:采用LinkedHashMap實(shí)現(xiàn);

    3、TreeSet:TreeMap。

  Map:put/get/remove。

    1、HashMap/HashTable:散列表,和ArrayList一樣采用數(shù)組實(shí)現(xiàn),超過初始容量會對性能有損耗;

    2、LinkedHashMap:繼承自HashMap,但通過重寫嵌套類HashMap.Entry實(shí)現(xiàn)了鏈表結(jié)構(gòu),同樣有容量的問題;

    3、Properties:是繼承的HashTable。

    順便說一下Arrays.asList,這個方法的實(shí)現(xiàn)依賴一個嵌套類,這個嵌套類也叫ArrayList!

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于springboot和redis實(shí)現(xiàn)單點(diǎn)登錄

    基于springboot和redis實(shí)現(xiàn)單點(diǎn)登錄

    這篇文章主要為大家詳細(xì)介紹了基于springboot和redis實(shí)現(xiàn)單點(diǎn)登錄,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Java 如何使用Velocity引擎生成代碼

    Java 如何使用Velocity引擎生成代碼

    代碼生成器,可以有效減少編寫重復(fù)代碼,快速實(shí)現(xiàn)簡單的業(yè)務(wù)邏輯,也能讓我們的代碼保持一致。那目前,我們看到的代碼生成器,大部分是基于velocity引擎模板生成的,接下來我們就學(xué)習(xí)一下如何實(shí)現(xiàn)代碼生成器。
    2021-06-06
  • 在SpringBoot當(dāng)中使用Thymeleaf視圖解析器的詳細(xì)教程

    在SpringBoot當(dāng)中使用Thymeleaf視圖解析器的詳細(xì)教程

    Thymeleaf是一款開源的模板引擎,它允許前端開發(fā)者使用HTML與XML編寫動態(tài)網(wǎng)頁,hymeleaf的主要特點(diǎn)是將表達(dá)式語言嵌入到HTML結(jié)構(gòu)中,它支持Spring框架,使得在Spring MVC應(yīng)用中集成非常方便,本文給大家介紹了在SpringBoot當(dāng)中使用Thymeleaf視圖解析器的詳細(xì)教程
    2024-09-09
  • java中文及特殊字符的校驗(yàn)方法

    java中文及特殊字符的校驗(yàn)方法

    這篇文章主要為大家詳細(xì)介紹了java中文及特殊字符的校驗(yàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Java循環(huán)創(chuàng)建對象內(nèi)存溢出的解決方法

    Java循環(huán)創(chuàng)建對象內(nèi)存溢出的解決方法

    在Java中,如果在循環(huán)中不當(dāng)?shù)貏?chuàng)建大量對象而不及時釋放內(nèi)存,很容易導(dǎo)致內(nèi)存溢出(OutOfMemoryError),所以本文給大家介紹了Java循環(huán)創(chuàng)建對象內(nèi)存溢出的解決方法,需要的朋友可以參考下
    2025-01-01
  • IDE Eval Reset忘了重置進(jìn)不去的完美解決方法

    IDE Eval Reset忘了重置進(jìn)不去的完美解決方法

    這篇文章主要介紹了IDE Eval Reset忘了重置進(jìn)不去的完美解決方法,插件安裝方式包括離線安裝和在線安裝方式,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-12-12
  • 詳解shiro緩存機(jī)制

    詳解shiro緩存機(jī)制

    Shiro提供了類似于Spring的Cache抽象,即Shiro本身不實(shí)現(xiàn)Cache,但是對Cache進(jìn)行了又抽象,方便更換不同的底層Cache實(shí)現(xiàn)。下面通過實(shí)例代碼給大家分享shiro緩存機(jī)制,感興趣的朋友一起看看吧
    2017-09-09
  • Servlet方法生命周期及執(zhí)行原理詳解

    Servlet方法生命周期及執(zhí)行原理詳解

    運(yùn)行在服務(wù)器端的小程序,Servlet就是一個接口,定義了Java類被瀏覽器訪問到(tomcat識別)的規(guī)則,將來我們自定義一個類,實(shí)現(xiàn)Servlet接口,復(fù)寫方法
    2021-09-09
  • 淺談一下數(shù)據(jù)庫連接池Druid德魯伊

    淺談一下數(shù)據(jù)庫連接池Druid德魯伊

    數(shù)據(jù)庫連接池就是一個容器持有多個數(shù)據(jù)庫連接,當(dāng)程序需要操作數(shù)據(jù)庫的時候直接從池中取出連接,使用完之后再還回去,和線程池一個道理,需要的朋友可以參考下
    2023-05-05
  • 利用EasyPOI實(shí)現(xiàn)多sheet和列數(shù)的動態(tài)生成

    利用EasyPOI實(shí)現(xiàn)多sheet和列數(shù)的動態(tài)生成

    EasyPoi功能如同名字,主打的功能就是容易,讓一個沒見接觸過poi的人員就可以方便的寫出Excel導(dǎo)出,Excel導(dǎo)入等功能,本文主要來講講如何利用EasyPOI實(shí)現(xiàn)多sheet和列數(shù)的動態(tài)生成,需要的可以了解下
    2025-03-03

最新評論

邳州市| 永靖县| 满城县| 额济纳旗| 灵丘县| 深圳市| 民和| 云梦县| 衡阳县| 江孜县| 额尔古纳市| 榕江县| 德安县| 勐海县| 丹巴县| 改则县| 道孚县| 海丰县| 车险| 罗定市| 武定县| 那坡县| 酒泉市| 五台县| 宣武区| 老河口市| 剑川县| 克东县| 湖南省| 蓝田县| 建宁县| 色达县| 镇沅| 松溪县| 会理县| 兴隆县| 湖州市| 鄂州市| 巴林左旗| 南平市| 闽清县|