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

Java集合總結(jié)

 更新時(shí)間:2019年01月04日 14:11:00   作者:sdr_zd  
今天小編就為大家分享一篇關(guān)于Java集合總結(jié),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧

集合和數(shù)組在存儲(chǔ)數(shù)據(jù)的時(shí)候是各有優(yōu)缺點(diǎn)的,先總結(jié)下集合和數(shù)組的區(qū)別

1.數(shù)組長(zhǎng)度固定,集合長(zhǎng)度不固定

2.數(shù)組只能存儲(chǔ)同一類(lèi)型的元素,集合可以存儲(chǔ)不同數(shù)據(jù)類(lèi)型(在引入泛型后,可以規(guī)定元素的類(lèi)型相同)

3.數(shù)組可以存儲(chǔ)基本類(lèi)型也可以存儲(chǔ)引用類(lèi)型,集合只能存儲(chǔ)引用類(lèi)型

集合類(lèi)由兩大接口派生而出:Collection<E>和Map<K,V>

Collection<E>:是接口,需要由實(shí)現(xiàn)類(lèi)去實(shí)現(xiàn)接口,存儲(chǔ)單列元素。

它的主要方法:

添加:boolean add(E e)  移除:boolean remove(Object o)  判斷是否包含某元素:boolean contains(Object o)  返回集合中元素的個(gè)數(shù):int size()   判斷集合是否為空:boolean isEmpty()  迭代器:Iterator<E> iterator()  是Collection集合特有的一種遍歷方式,實(shí)現(xiàn)了Iterable<E>接口,使用boolean hasNext():如果迭代器中還有元素,則返回true。和E next():返回迭代器中的下一個(gè)元素  這兩個(gè)方法進(jìn)行遍歷

它的子接口:List<E>Set<E>Queue<E>。List集合中元素是有序不唯一的(有序是指存儲(chǔ)有序但不是排序),Set集合中元素是無(wú)序但唯一的。

List<E>集合的實(shí)現(xiàn)類(lèi):

  • ArrayList:底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組,查詢(xún)快,增刪慢;線程不安全,效率高;
  • Vector:底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組,查詢(xún)快,增刪慢;線程安全,效率低;
  • LinkedList:底層數(shù)據(jù)結(jié)構(gòu)是聯(lián)邦,查詢(xún)慢,增刪快;線程不安全,效率低。
  • Queue<E>:底層數(shù)據(jù)結(jié)構(gòu)是隊(duì)列,類(lèi)似于List(Queue接觸較少,后面不做總結(jié))

Set<E>集合的實(shí)現(xiàn)類(lèi):

HashSet:底層數(shù)據(jù)結(jié)構(gòu)是哈希表,依賴(lài)HashCode()方法和equals()方法。這兩個(gè)方法的執(zhí)行順序:先HashCode(),值不同:添加;值相同:equals()值,不同:添加;相同:不添加。 其子類(lèi)LinkedHashSet,底層數(shù)據(jù)結(jié)構(gòu)由哈希表及鏈表構(gòu)成,鏈表保證元素有序,Set保證元素唯一。

TreeSet:底層數(shù)據(jù)結(jié)構(gòu)是紅黑樹(shù),是一種自平衡的二叉樹(shù)。元素排序(是排序不是有序!)

排序分為自然排序和比較器排序。自然排序:元素具備比較性,元素所屬類(lèi)實(shí)現(xiàn)接口Comparable即可,比如我們平常使用的Integer,String都已實(shí)現(xiàn)Comparable接口;比較器排序:如果元素是自定義類(lèi)時(shí),需要按需求對(duì)元素進(jìn)行排序,比如按自定義類(lèi)中的某個(gè)成員變量的大小進(jìn)行排序,此時(shí)需要集合接收一個(gè)Comparator的實(shí)現(xiàn)類(lèi)對(duì)象,可采用匿名內(nèi)部類(lèi)或外部類(lèi)去重寫(xiě)compare()方法。

Map<K,V>:是一個(gè)接口,K是鍵 ,V是該鍵對(duì)應(yīng)的值,存儲(chǔ)的元素是鍵值對(duì),也就是成對(duì)存在的,存儲(chǔ)雙列元素。鍵不能重復(fù),每一個(gè)鍵最多映射一個(gè)值。

它的主要方法:

添加:V put(K key,V value)   刪除:V remove(K key,V value)   判斷:1).boolean containsKey(Object o):是否包含某個(gè)鍵;2).boolean containsValue(Object o):是否包含某個(gè)值;3).boolean isEmpty():是否為空  獲取:1) Set<K> keySet() 獲取所有鍵的視圖  2) V get(Object key) 返回改建對(duì)應(yīng)的值  3) int size() 獲得該集合的鍵值對(duì)的對(duì)數(shù)

Map集合的遍歷方式:

1)鍵找值:將所有的鍵獲取到一個(gè)集合Set中,再遍歷該集合獲取對(duì)應(yīng)的值

2)由鍵值對(duì)對(duì)象找鍵和值:獲取所有的鍵值對(duì)對(duì)象到集合中,再遍歷該集合獲得每一個(gè)鍵值對(duì)的鍵和值

Map常用的實(shí)現(xiàn)類(lèi)與Set的實(shí)現(xiàn)類(lèi)類(lèi)似:

  • Hashtable:類(lèi)似HashSet,線程安全,效率低,被HashMap替代;
  • HashMap:類(lèi)似HashSet,線程不安全,效率高;
  • LinkedHashMap:類(lèi)似LinkedHashSet;
  • TreeMap:類(lèi)似SetMap

注意:Map集合的數(shù)據(jù)結(jié)構(gòu)僅對(duì)鍵有效,與值無(wú)關(guān)。

判斷使用哪個(gè)集合:

是否是鍵值對(duì)形式的元素?

是:Map

是否需要排序?

是:TreeMap

否:HashMap

否:Collection

是否唯一(或有序)

不唯一,有序:List

數(shù)據(jù)結(jié)構(gòu):數(shù)組:ArrayList(線程不安全,效率高);Vector(線程安全,效率低)

鏈表:LinkedList(線程不安全,效率高);

唯一,無(wú)序:Set

是否排序?

是:TreeSet

否:HashSet

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

相關(guān)文章

  • SpringBoot + JPA @ManyToMany的操作要點(diǎn)說(shuō)明

    SpringBoot + JPA @ManyToMany的操作要點(diǎn)說(shuō)明

    這篇文章主要介紹了SpringBoot + JPA @ManyToMany的操作要點(diǎn)說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • maven中pom.xml詳細(xì)介紹

    maven中pom.xml詳細(xì)介紹

    最近在學(xué)習(xí)maven,這篇文章主要介紹了maven中pom.xml詳細(xì)介紹,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • idea2020.1無(wú)法自動(dòng)加載maven依賴(lài)的jar包問(wèn)題及解決方法

    idea2020.1無(wú)法自動(dòng)加載maven依賴(lài)的jar包問(wèn)題及解決方法

    這篇文章主要介紹了idea2020.1無(wú)法自動(dòng)加載maven依賴(lài)的jar包問(wèn)題及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • HTTPClient如何在Springboot中封裝工具類(lèi)

    HTTPClient如何在Springboot中封裝工具類(lèi)

    這篇文章主要介紹了HTTPClient如何在Springboot中封裝工具類(lèi)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 解決idea check out 切換分支時(shí)找不到需要的分支問(wèn)題

    解決idea check out 切換分支時(shí)找不到需要的分支問(wèn)題

    這篇文章主要介紹了解決idea check out 切換分支時(shí)找不到需要的分支問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • mybatis如何實(shí)現(xiàn)saveOrUpdate

    mybatis如何實(shí)現(xiàn)saveOrUpdate

    這篇文章主要介紹了mybatis如何實(shí)現(xiàn)saveOrUpdate問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Java輕松掌握面向?qū)ο蟮娜筇匦苑庋b與繼承和多態(tài)

    Java輕松掌握面向?qū)ο蟮娜筇匦苑庋b與繼承和多態(tài)

    本文主要講述的是面向?qū)ο蟮娜筇匦裕悍庋b,繼承,多態(tài),內(nèi)容含括從封裝到繼承再到多態(tài)的所有重點(diǎn)內(nèi)容以及使用細(xì)節(jié)和注意事項(xiàng),內(nèi)容有點(diǎn)長(zhǎng),請(qǐng)大家耐心看完
    2022-05-05
  • idea中定時(shí)及多數(shù)據(jù)源配置方法

    idea中定時(shí)及多數(shù)據(jù)源配置方法

    因項(xiàng)目要求,需要定時(shí)從達(dá)夢(mèng)數(shù)據(jù)庫(kù)中取數(shù)據(jù),并插入或更新到ORACLE數(shù)據(jù)庫(kù)中,這篇文章主要介紹了idea中定時(shí)及多數(shù)據(jù)源配置方法,需要的朋友可以參考下
    2023-12-12
  • Java不可變類(lèi)機(jī)制淺析

    Java不可變類(lèi)機(jī)制淺析

    所謂的不可變類(lèi)是指這個(gè)類(lèi)的實(shí)例一旦創(chuàng)建完成后,就不能改變其成員變量值。如JDK內(nèi)部自帶的很多不可變類(lèi):Interger、Long和String等。接下來(lái)通過(guò)本文給大家介紹Java不可變類(lèi)機(jī)制,需要的朋友參考下
    2017-02-02
  • 在ChatGPT的API中支持多輪對(duì)話的實(shí)現(xiàn)方法

    在ChatGPT的API中支持多輪對(duì)話的實(shí)現(xiàn)方法

    ChatGPT是由OpenAI研發(fā)的一種預(yù)訓(xùn)練語(yǔ)言模型,只能在OpenAI平臺(tái)上進(jìn)行訓(xùn)練,目前并不對(duì)外開(kāi)放訓(xùn)練接口,這篇文章主要介紹了在ChatGPT的API中支持多輪對(duì)話的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2023-02-02

最新評(píng)論

东乡县| 长治县| 民勤县| 乐山市| 出国| 伊通| 吉木乃县| 湖南省| 凌云县| 丹阳市| 义乌市| 海淀区| 彝良县| 庆元县| 彰化县| 富顺县| 专栏| 精河县| 澄江县| 抚顺县| 嘉荫县| 凌海市| 太和县| 洪雅县| 台安县| 保山市| 平乐县| 瑞丽市| 香格里拉县| 天柱县| 台州市| 石屏县| 孝昌县| 牟定县| 霍林郭勒市| 洞头县| 壤塘县| 邵武市| 青海省| 炉霍县| 诏安县|