Java的Map接口,以及Collection和Collections的区别
一、JAVA集合類(Collection接口、Map接口)
java.util.Collection 是一個(gè)集合接口。它提供了對集合對象進(jìn)行基本操作的通用接口方法。Collection接口在Java 類庫中有很多具體的實(shí)現(xiàn)。Collection接口的意義是為各種具體的集合提供了最大化的統(tǒng)一操作方式。而Java集合大致可以分為Set、List、Queue和Map四種體系,其中Set代表無序、不可重復(fù)的集合;List代表有序、重復(fù)的集合;而Map則代表具有映射關(guān)系的集合,Java 5 又增加了Queue體系集合,代表一種隊(duì)列集合實(shí)現(xiàn)。
- Set集合
Set集合與Collection集合基本相同,沒有提供任何額外的方法。實(shí)際上Set就是Collection,只是行為略有不同(Set不允許包含重復(fù)元素)。Set集合不允許包含相同的元素,如果試圖把兩個(gè)相同的元素加入同一個(gè)Set集合中,則添加操作失敗,add()方法返回false,且新元素不會被加入。 - List集合
List集合代表一個(gè)元素有序、可重復(fù)的集合,集合中每個(gè)元素都有其對應(yīng)的順序索引。List集合允許使用重復(fù)元素,可以通過索引來訪問指定位置的集合元素 。List集合默認(rèn)按元素的添加順序設(shè)置元素的索引,例如第一個(gè)添加的元素索引為0,第二個(gè)添加的元素索引為1…List作為Collection接口的子接口,可以使用Collection接口里的全部方法。而且由于List是有序集合,因此List集合里增加了一些根據(jù)索引來操作集合元素的方法。 - Queue集合
Queue用戶模擬隊(duì)列這種數(shù)據(jù)結(jié)構(gòu),隊(duì)列通常是指“先進(jìn)先出”(FIFO,first-in-first-out)的容器。隊(duì)列的頭部是在隊(duì)列中存放時(shí)間最長的元素,隊(duì)列的尾部是保存在隊(duì)列中存放時(shí)間最短的元素。新元素插入(offer)到隊(duì)列的尾部,訪問元素(poll)操作會返回隊(duì)列頭部的元素。通常,隊(duì)列不允許隨機(jī)訪問隊(duì)列中的元素。
注意:TreeMap實(shí)現(xiàn)SortMap接口,能夠把它保存的記錄根據(jù)鍵排序,默認(rèn)是按鍵值的升序排序,也可以指定排序的比較器,當(dāng)用Iterator 遍歷TreeMap時(shí),得到的記錄是排過序的。
- Map集合
Map用戶保存具有映射關(guān)系的數(shù)據(jù),因此Map集合里保存著兩組數(shù),一組值用戶保存Map里的key,另一組值用戶保存Map里的value,key和value都可以是任何引用類型的數(shù)據(jù)。Map的key不允許重復(fù),即同一個(gè)Map對象的任何兩個(gè)key通過equals方法比較總是返回false。
注意:LinkedHashMap 是HashMap的一個(gè)子類,保存了記錄的插入順序,在用Iterator遍歷LinkedHashMap時(shí),先得到的記錄肯定是先插入的.也可以在構(gòu)造時(shí)用帶參數(shù),按照應(yīng)用次數(shù)排序。在遍歷的時(shí)候會比HashMap慢,不過有種情況例外,當(dāng)HashMap容量很大,實(shí)際數(shù)據(jù)較少時(shí),遍歷起來可能會比 LinkedHashMap慢,因?yàn)長inkedHashMap的遍歷速度只和實(shí)際數(shù)據(jù)有關(guān),和容量無關(guān),而HashMap的遍歷速度和他的容量有關(guān)。其結(jié)構(gòu)圖如下:
- Java集合和數(shù)組的區(qū)別:
1.數(shù)組長度在初始化時(shí)指定,意味著只能保存定長的數(shù)據(jù)。而集合可以保存數(shù)量不確定的數(shù)據(jù)。同時(shí)可以保存具有映射關(guān)系的數(shù)據(jù)(即關(guān)聯(lián)數(shù)組,鍵值對 key-value)。
2.數(shù)組元素即可以是基本類型的值,也可以是對象。集合里只能保存對象(實(shí)際上只是保存對象的引用變量),基本數(shù)據(jù)類型的變量要轉(zhuǎn)換成對應(yīng)的包裝類才能放入集合類中。 - Map集合與Set集合、List集合的關(guān)系
1.與Set集合的關(guān)系
如果把Map里的所有key放在一起看,它們就組成了一個(gè)Set集合(所有的key沒有順序,key與key之間不能重復(fù)),實(shí)際上Map確實(shí)包含了一個(gè)keySet()方法,用戶返回Map里所有key組成的Set集合。
2.與List集合的關(guān)系
如果把Map里的所有value放在一起來看,它們又非常類似于一個(gè)List:元素與元素之間可以重復(fù),每個(gè)元素可以根據(jù)索引來查找,只是Map中索引不再使用整數(shù)值,而是以另外一個(gè)對象作為索引。
二、Collections
java.util.Collections 是一個(gè)包裝類。它包含有各種有關(guān)集合操作的靜態(tài)多態(tài)方法。該類不能實(shí)例化,就像一個(gè)工具類,服務(wù)于Java的Collection框架。以下Java代碼使用工具類collections實(shí)現(xiàn)排序功能,當(dāng)然還有很多其他功能
public class TestCollections { public static void main(String args[]) { //注意List是實(shí)現(xiàn)Collection接口的 List list = new ArrayList(); double array[] = {11,2,323,56,231,54,-3,-5}; for (int i = 0; i < array.length; i++) { list.add(new Double(array[i])); } //使用工具類中的靜態(tài)方法進(jìn)行排序Collections.sort(list); //輸出結(jié)果,可看見得到排序的結(jié)果for (int i = 0; i < array.length; i++) { System.out.println(list.get(i)); } } }- collections類主要方法有以下:
排序(主要用于List接口)
查找替換(主要用于collection接口)
同步:Collections工具類中提供了多個(gè)synchronizedXxx方法,該方法返回指定集合對象對應(yīng)的同步對象,從而解決多線程并發(fā)訪問集合時(shí)線程的安全問題。HashSet、ArrayList、HashMap都是線程不安全的,如果需要考慮同步,則使用這些方法。這些方法主要有:synchronizedSet、synchronizedSortedSet、synchronizedList、synchronizedMap、synchronizedSortedMap。
本文參考1
本文參考2
總結(jié)
以上是生活随笔為你收集整理的Java的Map接口,以及Collection和Collections的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国红色旅游消费大数据报告(2021)
- 下一篇: java美元兑换,(Java实现) 美元