国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

java學(xué)習(xí)(七) —— API集合類(lèi)

senntyou / 1221人閱讀

摘要:集合類(lèi)主要負(fù)責(zé)保存盛裝其他數(shù)據(jù),因此集合類(lèi)也被稱為容器類(lèi)。所有的集合類(lèi)都位于包下。表示一組對(duì)象,這些對(duì)象也稱為的元素。成員方法把集合轉(zhuǎn)成數(shù)組迭代器,集合的專用遍歷方式之接口概述有序的,也稱為序列。

前言

在編程中,常常需要集中存放多個(gè)數(shù)據(jù)。從傳統(tǒng)意義上講,數(shù)組是我們的一個(gè)很好的選擇,前提是我們實(shí)現(xiàn)已經(jīng)明確知道我們將要保存的對(duì)象的數(shù)量。

一旦在數(shù)組初始化時(shí)指定了數(shù)組長(zhǎng)度,這個(gè)數(shù)組長(zhǎng)度就是不可變的,如果我們需要保存一個(gè)可以動(dòng)態(tài)增長(zhǎng)的數(shù)據(jù),在編譯時(shí)無(wú)法確定具體的數(shù)量,java的集合類(lèi)就是一個(gè)很好的設(shè)計(jì)方案。

集合類(lèi)概述:面對(duì)對(duì)象語(yǔ)言對(duì)事物的體現(xiàn)都是以對(duì)象的形式,所以為了方便對(duì)多個(gè)對(duì)象的操作,Java就提供類(lèi)集合類(lèi)。

數(shù)組和集合類(lèi)都是容器,不同之處:

(1)數(shù)組雖然也可以存儲(chǔ)對(duì)象,但長(zhǎng)度是固定的;集合的長(zhǎng)度是可變的。
(2)數(shù)組中可以存儲(chǔ)基本數(shù)據(jù)類(lèi)型,集合只能存儲(chǔ)對(duì)象。

集合類(lèi)特點(diǎn):集合只用于存儲(chǔ)對(duì)象,集合長(zhǎng)度可變,集合可以存儲(chǔ)不同類(lèi)型的對(duì)象。

集合類(lèi)主要負(fù)責(zé)保存、盛裝其他數(shù)據(jù),因此集合類(lèi)也被稱為容器類(lèi)。

所有的集合類(lèi)都位于java.util包下。

細(xì)數(shù)java集合,其中比較常見(jiàn)的就是List、Set、Map、和Queue,在這四者中,除了Map,其他三個(gè)接口都繼承于Collection。

Collection

Collection接口概述:Collection層次結(jié)構(gòu)中的根接口。

Collection表示一組對(duì)象,這些對(duì)象也稱為collection的元素。

一些collection允許有重復(fù)的元素,而另一些不允許;一些collection是有序的,而另一些則是無(wú)序的。

成員方法:

(1)boolean add(E e)
(2)boolean remove(Object o)
(3)void clear()
(4)boolean contains(Object o)
(5)boolean isEmpty()
(6)int size()
(7)boolean addAll(Collection c)
(8)boolean removeAll(Collection c)
(9)boolean containsAll(Collection c)
(10)boolean retainAll(Collection c)
(11)把集合轉(zhuǎn)成數(shù)組:Object[] toArray()
(12)迭代器,集合的專用遍歷方式:Iterator iterator()

Collection之List接口

概述:有序的collection,也稱為序列。

List接口在java集合類(lèi)中充當(dāng)?shù)氖且粋€(gè)元素有序、元素可重復(fù)的集合角色。

繼承于Collection集合,所以擁有Collection集合的所有方法。

List集合也擁有屬于自己的方法:用來(lái)實(shí)現(xiàn)根據(jù)元素索引來(lái)操作集合元素的作用。

此接口的用戶可以對(duì)列表中的每個(gè)元素的插入位置進(jìn)行精確的控制。

用戶可以根據(jù)元素的整數(shù)索引(在列表中的位置)訪問(wèn)元素,并搜索列表中的元素。

成員方法:

(1)void add(int index,E element)
(2)E remove(int index)
(3)E get(int index)
(4)E set(int index,E element)
(5)ListIterator listIterator()

常見(jiàn)的繼承List接口的實(shí)用類(lèi)

ArrayList:

(1)基于數(shù)組實(shí)現(xiàn)的List類(lèi),封裝了一個(gè)動(dòng)態(tài)的、允許再分配的Object[]數(shù)組
(2)ArrayList用initialCapacity參數(shù)來(lái)設(shè)置該數(shù)組的長(zhǎng)度,當(dāng)長(zhǎng)度超過(guò)預(yù)設(shè)值后,ArrayList會(huì)動(dòng)態(tài)增加。
(3)ArrayList類(lèi)是線程不安全的,如果要保證該集合的同步性,必須在程序中手動(dòng)保存。
(4)底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組,查詢快,增刪慢
(5)線程不安全,效率高
(6)增刪慢也是在數(shù)據(jù)量較大的情況下,在數(shù)據(jù)量較小的情況下,ArrayList()不一定比LinkedList()方法慢。
(7)另外,ArrayList在末尾插入和刪除數(shù)據(jù)的話,速度反而比LinkedList要快。

LinkedList:

(1)底層數(shù)據(jù)結(jié)構(gòu)是鏈表,查詢慢,增刪快。
(2)除了繼承List接口外,LinkedList接口也繼承了Deque接口,所以也可以當(dāng)作棧和隊(duì)列(雙向)來(lái)使用。
(3)成員方法:
    【1】public void addFirst(E e)及addLast(E e)
    【2】public E getFirst()及getLast()
    【3】public E removeFirst()及public E removeLast()

Vector:

(1)底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組,查詢快,增刪慢
(2)Vector與Array List十分的相像,都是基于數(shù)組實(shí)現(xiàn)的List類(lèi),也是封裝了一個(gè)動(dòng)態(tài)分配的Object[]數(shù)組,也可以使用initialCapacity參數(shù)來(lái)設(shè)置數(shù)組的長(zhǎng)度。
(3)Vector是線程安全的,因此性能差

Stack:

(1)Stack是繼承Vector的子類(lèi),它主要是用來(lái)模擬棧,因此也具備了peek()、pop()、push()等主要用于棧操作的方法。
(2)Stack也是線程安全的,因此性能差

使用List集合的建議:

(1)遍歷集合元素。ArrayList和Vector使用get()方法來(lái)獲取遍歷元素,LinkedList應(yīng)該采用迭代器來(lái)遍歷集合元素。
(2)插入和刪除。當(dāng)這類(lèi)操作較多的時(shí)候,優(yōu)先考慮使用LinkedList。
(3)多線程。當(dāng)需要使用到多線程的ArrayList時(shí),可以使用Collections將該集合類(lèi)包裝成線程安全的集合。

Collection之Set接口

一個(gè)不包含重復(fù)元素的collection。

Set接口是一個(gè)無(wú)序的、不可重復(fù)的集合。

Set集合中加入數(shù)據(jù)元素時(shí),Set集合通常不用記住元素的添加順序。

當(dāng)兩個(gè)相同元素加入到一個(gè)Set集合中,則添加操作失敗。

常見(jiàn)的繼承Set接口的實(shí)用類(lèi)

HashSet:

(1)按照hash算法來(lái)存儲(chǔ)集合中的元素,因此具有良好的存取和查找功能。
(2)無(wú)序的,非線程同步的,集合元素可以是null
(3)HashSet集合存儲(chǔ)過(guò)程:
    【1】當(dāng)向HashSet集合中存入一個(gè)元素時(shí),HashSet會(huì)調(diào)用該對(duì)象的hashCode()方法來(lái)得到該對(duì)象的hashCode值,然后根據(jù)該值決定該對(duì)象在HashSet中的存儲(chǔ)位置。
    【2】如果有兩個(gè)元素通過(guò)equals()方法返回true,但他們的hashCode()方法返回值不相等,HashSet也會(huì)將其存儲(chǔ)在不同的位置。
    【3】也就是說(shuō):HashSet的添加元素判斷標(biāo)準(zhǔn)是:兩個(gè)對(duì)象通過(guò)equals()方法比較相等,并且兩個(gè)對(duì)象的hashCode()方法返回值也相等。

LinkedHashSet:

(1)元素有序并且唯一。
(2)由鏈表保證元素有序。
(3)由哈希表保證元素唯一。
(4)LinkedHashSet是繼承HashSet的子類(lèi)。

TreeSet:

(1)使用元素的自然順序?qū)υ剡M(jìn)行排序。
(2)或者根據(jù)創(chuàng)建set時(shí)提供的Comparator進(jìn)行排序。
(3)TreeSet是SortedSet接口的實(shí)現(xiàn)類(lèi),所以TreeSet可以確保集合元素處于排序狀態(tài)。
(4)TreeSet使用紅黑樹(shù)來(lái)維護(hù)集合元素的次序。如果實(shí)現(xiàn)comparator()方法,可以實(shí)現(xiàn)定制排序。如果采用自然排序,則返回null。 

EnumSet:

(1)專為枚舉類(lèi)設(shè)計(jì)的集合類(lèi)
(2)所有元素都必須是指定枚舉類(lèi)型的枚舉值,該枚舉類(lèi)型在創(chuàng)建EnumSet顯式或隱式的指定。
(3)EnumSet在內(nèi)部以位向量的形式存儲(chǔ),十分緊湊高效,因此EnumSet對(duì)象占用內(nèi)存小,并且運(yùn)行效率高
(4)該集合元素中不允許加入null元素。

Map接口

該接口無(wú)法繼承Collection接口,主要原因還是因?yàn)镸ap是用來(lái)存儲(chǔ)具有映射關(guān)系的數(shù)據(jù)。

Map中保存著兩組值。一組值用來(lái)保存Map中的Key,另外一組用來(lái)保存Map里的value。

值得注意的是,Map中的Key不能重復(fù),判斷標(biāo)準(zhǔn)是同一個(gè)Map對(duì)象的任何兩個(gè)Key通過(guò)equals方法比較總是返回false

成員方法:

(1)V put(K key,V value)
(2)V remove(Object key)
(3)void clear()
(4)boolean containsKey(Object key)
(5)boolean containsValue(Object value)
(6)boolean isEmpty()
(7)int size()

Map接口和Collection接口的不同:

(1)Map是雙列的,Collection是單列的
(2)Map的健是唯一的,Collection的子體系Set是唯一的
(3)Map集合的數(shù)據(jù)結(jié)構(gòu)值針對(duì)健有效,跟值無(wú)關(guān)
(4)Collection集合的數(shù)據(jù)結(jié)構(gòu)是針對(duì)元素有效的

常見(jiàn)的繼承Map接口的實(shí)用類(lèi)

HashMap:

(1)線程不安全,并且HashMap中可以使用null作為key或者value
(2)key是哈希表結(jié)構(gòu),可以保證健的唯一性

LinkedHashMap:

(1)LinkedHashMap使用一個(gè)雙向鏈表來(lái)維護(hù)key-value對(duì)的次序
(2)LinkedHashMap是一個(gè)有序的Map集合,順序與key-value對(duì)的插入順序保持一致
(3)具有可預(yù)知的迭代順序

TreeMap:

(1)TreeMap是一個(gè)紅黑樹(shù)的結(jié)構(gòu),每個(gè)key-value作為紅黑樹(shù)的一個(gè)節(jié)點(diǎn)
(2)TreeMap也會(huì)對(duì)key進(jìn)行排序,也分為自然排序和定制排序兩種
(3)健的紅黑樹(shù)結(jié)構(gòu),可以保重健的排序和唯一性

Iterator

Iterator概述:對(duì)collection進(jìn)行迭代的迭代器,依賴于集合而存在

凡是實(shí)現(xiàn)了Collection接口的集合類(lèi),都有一個(gè)Iterator方法,用于返回一個(gè)實(shí)現(xiàn)了Iterator接口的對(duì)象,用于遍歷集合。

成員方法:

(1)boolean hasNext()
(2)E next()
(3)remove()

參考鏈接

https://www.cnblogs.com/zhouy...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/77081.html

相關(guān)文章

  • Java學(xué)習(xí)路線總結(jié),搬磚工逆襲Java架構(gòu)師(全網(wǎng)最強(qiáng))

    摘要:哪吒社區(qū)技能樹(shù)打卡打卡貼函數(shù)式接口簡(jiǎn)介領(lǐng)域優(yōu)質(zhì)創(chuàng)作者哪吒公眾號(hào)作者架構(gòu)師奮斗者掃描主頁(yè)左側(cè)二維碼,加入群聊,一起學(xué)習(xí)一起進(jìn)步歡迎點(diǎn)贊收藏留言前情提要無(wú)意間聽(tīng)到領(lǐng)導(dǎo)們的談話,現(xiàn)在公司的現(xiàn)狀是碼農(nóng)太多,但能獨(dú)立帶隊(duì)的人太少,簡(jiǎn)而言之,不缺干 ? 哪吒社區(qū)Java技能樹(shù)打卡?【打卡貼 day2...

    Scorpion 評(píng)論0 收藏0
  • Java9的新特性

    摘要:新特性概述系列一安裝及使用系列二運(yùn)行系列三模塊系統(tǒng)精要系列四更新系列五系列六系列七系列八系列九與的區(qū)別遷移注意事項(xiàng)參數(shù)遷移相關(guān)選項(xiàng)解析使用構(gòu)建實(shí)例使用示例帶你提前了解中的新特性 Java語(yǔ)言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的新特性 Java10的新特性 Java11的新特性 Java12的新特性 Java13的新特性...

    ddongjian0000 評(píng)論0 收藏0
  • Java學(xué)習(xí)筆記6-數(shù)據(jù)結(jié)構(gòu)

    摘要:工具包提供了強(qiáng)大的數(shù)據(jù)結(jié)構(gòu)這一節(jié),我們來(lái)學(xué)習(xí)下的數(shù)據(jù)結(jié)構(gòu)。枚舉接口定義了一種從數(shù)據(jù)結(jié)構(gòu)中取回連續(xù)元素的方式。六字典字典類(lèi)是一個(gè)抽象類(lèi),它定義了鍵映射到值的數(shù)據(jù)結(jié)構(gòu)。哈希表鍵的具體含義完全取決于哈希表的使用情景和它包含的數(shù)據(jù)。 Java工具包提供了強(qiáng)大的數(shù)據(jù)結(jié)構(gòu),這一節(jié),我們來(lái)學(xué)習(xí)下Java的數(shù)據(jù)結(jié)構(gòu)。 一、數(shù)據(jù)結(jié)構(gòu)分類(lèi) 枚舉(Enumeration) 位集合(BitSet) 向量(V...

    wmui 評(píng)論0 收藏0
  • 你和阿里資深架構(gòu)師之間,差的不僅僅是年齡(進(jìn)階必看)

    摘要:導(dǎo)讀閱讀本文需要有足夠的時(shí)間,筆者會(huì)由淺到深帶你一步一步了解一個(gè)資深架構(gòu)師所要掌握的各類(lèi)知識(shí)點(diǎn),你也可以按照文章中所列的知識(shí)體系對(duì)比自身,對(duì)自己進(jìn)行查漏補(bǔ)缺,覺(jué)得本文對(duì)你有幫助的話,可以點(diǎn)贊關(guān)注一下。目錄一基礎(chǔ)篇二進(jìn)階篇三高級(jí)篇四架構(gòu)篇五擴(kuò) 導(dǎo)讀:閱讀本文需要有足夠的時(shí)間,筆者會(huì)由淺到深帶你一步一步了解一個(gè)資深架構(gòu)師所要掌握的各類(lèi)知識(shí)點(diǎn),你也可以按照文章中所列的知識(shí)體系對(duì)比自身,對(duì)自己...

    huaixiaoz 評(píng)論0 收藏0
  • 我的阿里之路+Java面經(jīng)考點(diǎn)

    摘要:我的是忙碌的一年,從年初備戰(zhàn)實(shí)習(xí)春招,年三十都在死磕源碼,三月份經(jīng)歷了阿里五次面試,四月順利收到實(shí)習(xí)。因?yàn)槲倚睦砗芮宄业哪繕?biāo)是阿里。所以在收到阿里之后的那晚,我重新規(guī)劃了接下來(lái)的學(xué)習(xí)計(jì)劃,將我的短期目標(biāo)更新成拿下阿里轉(zhuǎn)正。 我的2017是忙碌的一年,從年初備戰(zhàn)實(shí)習(xí)春招,年三十都在死磕JDK源碼,三月份經(jīng)歷了阿里五次面試,四月順利收到實(shí)習(xí)offer。然后五月懷著忐忑的心情開(kāi)始了螞蟻金...

    姘擱『 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<