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

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

集合接口collection與Map接口

2019-11-14 12:08:34
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

位于java.util包中

collection接口(不唯一、無(wú)序)

子接口

1.List接口  (存儲(chǔ)一組不唯一、有序的對(duì)象)

實(shí)現(xiàn)類(lèi)ArrayList(非同步的unsynchronized不是線程安全)實(shí)現(xiàn)類(lèi)LinkedList(非同步的unsynchronized不是線程安全)實(shí)現(xiàn)類(lèi)Vector(線程安全的,同步的synchronized):(子類(lèi))Stack

ArrayList 采用數(shù)組方式存儲(chǔ)數(shù)據(jù)、利用索引直接獲取元素,遍歷元素和隨機(jī)訪問(wèn)元素的效率比較高ArrayList進(jìn)行元素替換可使用set(int index,Object o)的方法;也可以通過(guò)移除remove(int index)或者remove(Object o),然后添加add(Obeject o)的方式

indexOf(Object o) 返回元素在集合中出現(xiàn)的索引boolean add(Object o) 在列表的末尾順序添加元素,起始索引位置從0 開(kāi)始void add(int index,Object o) 在指定的索引位置添加元素。索引位置必須介于0和列表中元素個(gè)數(shù)之間int size() 返回列表中的元素個(gè)數(shù)Object get(int index) 返回指定索引位置處的元素。取出的元素是Object 類(lèi)型,使用前需要進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換boolean contains(Object o) 判斷列表中是否存在指定元素boolean remove(Object o) 從列表中刪除元素Object remove(int index) 從列表中刪除指定位置元素,起始索引位置從0 開(kāi)始

addAll是傳入一個(gè)List,將此List中的所有元素加入到當(dāng)前List中,也就是當(dāng)前List會(huì)增加的元素個(gè)數(shù)為傳入的List的大小

即addAll(Collection c)   add(int index,Elelemt e)

--------------------------------------

addAll(Collection c)

此方法按照指定 collection 的迭代器所返回的元素順序,將該 collection 中的所有元素添加到此列表的尾部。如果正在進(jìn)行此操作時(shí)修改指定的 collection ,那么此操作的行為是不確定的。(這意味著如果指定的 collection 是此列表且此列表是非空的,那么此調(diào)用的行為是不確定的)。

C

包含要添加到此列表中的元素的 collection

return

如果此列表由于調(diào)用而發(fā)生更改,則返回 true

Throws

NullPointerException: 如果指定的 collection 為 null

addAll是傳入一個(gè)List,將此List中的所有元素加入到當(dāng)前List中,也就是當(dāng)前List會(huì)增加的元素個(gè)數(shù)為傳入的List的大小

即addAll(Collection c)add(int index,Elelemt e)

--------------------------------------

addAll(Collection c)

此方法按照指定 collection 的迭代器所返回的元素順序,將該 collection 中的所有元素添加到此列表的尾部。如果正在進(jìn)行此操作時(shí)修改指定的 collection ,那么此操作的行為是不確定的。(這意味著如果指定的 collection 是此列表且此列表是非空的,那么此調(diào)用的行為是不確定的)。

C

包含要添加到此列表中的元素的 collection

return

如果此列表由于調(diào)用而發(fā)生更改,則返回 true

Throws

NullPointerException: 如果指定的 collection 為 null

List.addAll()方法,就是規(guī)定了,自己的這個(gè)List 就是容器,往里面增加的List 實(shí)例,增加到里面后,都會(huì)被看成對(duì)象。

    這時(shí):List.add(list1),List.add(list2);List.add(list3),  這時(shí),List.size 它的大小就是所有l(wèi)ist 實(shí)例化后的總數(shù)和總的記錄數(shù)。

   

    因此,當(dāng)需要把多個(gè)List 實(shí)例放到一起的時(shí)候,必須使用List.addAll()方法。

Java中的ArrayList的初始容量和容量分配

一般情況下,使用的時(shí)候會(huì)像這樣進(jìn)行聲明:List arrayList = new ArrayList();如果像上面這樣使用默認(rèn)的構(gòu)造方法,初始容量被設(shè)置為10。當(dāng)ArrayList中的元素超過(guò)10個(gè)以后,會(huì)重新分配內(nèi)存空間,使數(shù)組的大小增長(zhǎng)到16。可以通過(guò)調(diào)試看到動(dòng)態(tài)增長(zhǎng)的數(shù)量變化:10->16->25->38->58->88->...

也可以使用下面的方式進(jìn)行聲明:List arrayList = new ArrayList(4);將ArrayList的默認(rèn)容量設(shè)置為4。當(dāng)ArrayList中的元素超過(guò)4個(gè)以后,會(huì)重新分配內(nèi)存空間,使數(shù)組的大小增長(zhǎng)到7??梢酝ㄟ^(guò)調(diào)試看到動(dòng)態(tài)增長(zhǎng)的數(shù)量變化:4->7->11->17->26->...

那么容量變化的規(guī)則是什么呢?請(qǐng)看下面的公式:((舊容量 * 3) / 2) + 1

一旦容量發(fā)生變化,就要帶來(lái)額外的內(nèi)存開(kāi)銷(xiāo),和時(shí)間上的開(kāi)銷(xiāo)。所以,在已經(jīng)知道容量大小的情況下,推薦使用下面方式進(jìn)行聲明:List arrayList = new ArrayList(CAPACITY_SIZE);即指定默認(rèn)容量大小的方式。

LinkedList 采用鏈表存儲(chǔ)方式。插入、刪除元素時(shí)效率比較高void addFirst(Object o) 在列表的首部添加元素void addLast(Object o) 在列表的末尾添加元素Object getFirst() 返回列表中的第一個(gè)元素Object getLast() 返回列表中的最后一個(gè)元素Object removeFirst() 刪除并返回列表中的第一個(gè)元素

Object removeLast() 刪除并返回列表中的最后一個(gè)元素

 add(int index, E element):在此列表中指定的位置插入指定的元素。

       addAll(Collection<? extends E> c):添加指定 collection 中的所有元素到此列表的結(jié)尾,順序是指定 collection 的迭代器返回這些元素的順序。

       addAll(int index, Collection<? extends E> c):將指定 collection 中的所有元素從指定位置開(kāi)始插入此列表。

       AddFirst(E e): 將指定元素插入此列表的開(kāi)頭。

       addLast(E e): 將指定元素添加到此列表的結(jié)尾。

clear(): 從此列表中移除所有元素。

       remove():獲取并移除此列表的頭(第一個(gè)元素)。

       remove(int index):移除此列表中指定位置處的元素。

       remove(Objec o):從此列表中移除首次出現(xiàn)的指定元素(如果存在)。

       removeFirst():移除并返回此列表的第一個(gè)元素。

       removeFirstOccurrence(Object o):從此列表中移除第一次出現(xiàn)的指定元素(從頭部到尾部遍歷列表時(shí))。

       removeLast():移除并返回此列表的最后一個(gè)元素。

       removeLastOccurrence(Object o):從此列表中移除最后一次出現(xiàn)的指定元素(從頭部到尾部遍歷列表時(shí))。

       對(duì)于查找方法的源碼就沒(méi)有什么好介紹了,無(wú)非就是迭代,比對(duì),然后就是返回當(dāng)前值。

       get(int index):返回此列表中指定位置處的元素。

       getFirst():返回此列表的第一個(gè)元素。

       getLast():返回此列表的最后一個(gè)元素。

       indexOf(Object o):返回此列表中首次出現(xiàn)的指定元素的索引,如果此列表中不包含該元素,則返回 -1。

       lastIndexOf(Object o):返回此列表中最后出現(xiàn)的指定元素的索引,如果此列表中不包含該元素,則返回 -1

2.Set接口  (存儲(chǔ)一組唯一、無(wú)序的對(duì)象)

set不存在get()方法(無(wú)序的)

采用對(duì)象的equals()方法比較兩個(gè)對(duì)象是否相等實(shí)現(xiàn)類(lèi)HashSet(不同步的,線程不安全的)實(shí)現(xiàn)類(lèi)TreeSet(不同步的,線程不安全的)add(Object o) 若未包含指定元素,則添加指定元素clear() 移除所有元素size() 返回set中的元素的數(shù)量isEmpty() 若set不包含任何元素則返回truecontains(Object o) 包含指定元素,則返回trueremove(Object o) 指定元素存在于set中,則將其移除

toArray()

addAll方法用來(lái)向Set集合添加另一個(gè)集合對(duì)象所包含的所有內(nèi)容。

語(yǔ)法  boolean addAll(Collection<? extends E> c) 

返回值:如果Set集合發(fā)生更改,則返回true。

參數(shù):c是要添加到Set集合中的另一個(gè)集合對(duì)象。

示例  本示例創(chuàng)建一個(gè)Set集合,為該集合添加一些對(duì)象,然后再創(chuàng)建第二個(gè)Set集合,同樣添加一些對(duì)象,最后調(diào)用addAll方法將第二個(gè)Set集合添加到第一個(gè)Set集合中,并且分別輸出調(diào)用addAll方法前后Set集合的大小。

Map接口(鍵值對(duì)<k,v>)

鍵值對(duì)形式保存數(shù)據(jù) key(唯一、無(wú)序)-value(不唯一、無(wú)序)key要求唯一,無(wú)法修改 只能remove鍵值,不能remove value值

Hashtable:底層是哈希表數(shù)據(jù)結(jié)構(gòu),不可以存入null鍵null值,該集合是線程同步的。jdk1.0效率低

HashMap:底層是哈希表數(shù)據(jù)結(jié)構(gòu),允許使用null值和null鍵,該集合是不同步的。jdk1.2效率高

TreeMap:底層是二叉樹(shù)數(shù)據(jù)結(jié)構(gòu)。線程不同步,可以用于給map集合中的鍵進(jìn)行排序。

isEmpty() 是否存在元素clear() 清除集合中所有元素Object  put(Object key, Object val)   以“鍵- 值”對(duì)的方式進(jìn)行存儲(chǔ)若包含則舊值將被替換  檢查key是否存在,若存在則進(jìn)行修改操作;反之進(jìn)行插入操作Object get(Object key)  根據(jù)鍵返回相關(guān)聯(lián)的值,如果不存在指定的鍵,返回nullObject remove(Object key) 刪除由指定的鍵映射的“鍵- 值對(duì)”int size()  返回元素個(gè)數(shù)Set keySet() 返回鍵的集合Collection values() 返回值的集合boolean containsKey(Object key)  如果存在由指定的鍵映射的“鍵-對(duì)”,返回truecontainsvalue(Object value)          判斷集合中是否存在value

Set entrySet() 鍵值對(duì)


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 涿鹿县| 吴堡县| 富平县| 静乐县| 梓潼县| 体育| 永吉县| 乌苏市| 建瓯市| 县级市| 富顺县| 宁阳县| 中方县| 胶南市| 西丰县| 天等县| 康马县| 凉城县| 青阳县| 专栏| 南华县| 汉中市| 濮阳县| 宁德市| 通化县| 合山市| 滕州市| 凤城市| 麻阳| 三亚市| 遂川县| 黑河市| 汝城县| 台南市| 鹤峰县| 会昌县| 井陉县| 湟源县| 东平县| 兰州市| 香港 |