List接口的典型實(shí)現(xiàn):一個(gè)抽象類(AbstractList)實(shí)現(xiàn)了List接口:List接口也是實(shí)現(xiàn)了Collection接口和Iterable接口,況且List是進(jìn)行存儲(chǔ)單列數(shù)據(jù)的集合,存儲(chǔ)有順序,允許進(jìn)行重復(fù)List(接口) AbstractList(抽象類) Vector(類) ArrayList LinkedList Stack(類,繼承于Vector)
創(chuàng)新互聯(lián)是專業(yè)的張家港網(wǎng)站建設(shè)公司,張家港接單;提供網(wǎng)站制作、成都做網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行張家港網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!List
list1=new ArrayList<>(); List list2=new LinkedList<>(); List list3=new Stack<>(); List list4=new Vector<>();
2.Map和SetMap和Set是一種專門用于進(jìn)行搜索的容器或者數(shù)據(jù)結(jié)構(gòu),總而言之,set和map存在的意義就是為了讓查找效率提升;比如說(shuō)以前的搜索方式是直接進(jìn)行遍歷,時(shí)間復(fù)雜度是O(N),但是元素比較多效率會(huì)變得非常慢,或者是二分查找,時(shí)間復(fù)雜度是log(n),但是前提是數(shù)組順序必須是有序的
set
SortSet HashSet
TreeSet
Map(接口)
SortMap(接口) HashMap
TreeMap
1)map是一個(gè)接口類,該類沒(méi)有繼承collection類,沒(méi)有實(shí)現(xiàn)Iterator不能實(shí)現(xiàn)迭代器進(jìn)行打印
2)該類存放的是key-value的鍵值對(duì)
,并且要求Key是唯一的,不可以重復(fù) 3)如果再次向map里面放元素,如果Key的值與之前的相同,那么就會(huì)更新Value的值;
4)map接口中有TreeMap(實(shí)現(xiàn)了sortMap是基于排序的)
1)Map是一個(gè)接口,是不可以進(jìn)行實(shí)例化對(duì)象的,如果想要實(shí)例化對(duì)象只能依靠實(shí)現(xiàn)類TreeMap或者HashMap
2)Map存放鍵值對(duì)的key是唯一的,value是可以重復(fù)的
3)Map中的Key可以全部分離出來(lái),放到Set中進(jìn)行訪問(wèn)
4)Map中的Value可以全部分離出來(lái),存儲(chǔ)在Collection中任意一個(gè)子集合中(這里面的value很有可能是重復(fù)的)
5)Map鍵值對(duì)的Key不能被修改,value可以進(jìn)行修改,如果想要修改Key,只能先將Key進(jìn)行刪除,然后再來(lái)進(jìn)行重新插入
6)TreeMap實(shí)現(xiàn)了SortMap接口,放入TreeMap的數(shù)據(jù)都是可以進(jìn)行比較的,都是實(shí)現(xiàn)了Compareable接口或者是Compareator接口,其中還不可以進(jìn)行存放null值
1)但是Set類只可以存放K的值,況且set中不能存放重復(fù)的元素,Set接口實(shí)現(xiàn)了Collection接口和Iterator接口,是可以使用迭代器來(lái)進(jìn)行打印的
2)Set只是繼承于Collection接口的一個(gè)類
3)底層是使用Map來(lái)進(jìn)行實(shí)現(xiàn)的,是使用Key和Object中的一個(gè)默認(rèn)對(duì)象作為鍵值對(duì)插入到Map里面的
4)Set不能插入空的Key,TreeSet實(shí)現(xiàn)了SortSet接口,是可比較的
5)Set大的功能就是針對(duì)元素來(lái)進(jìn)行去重
6)Set中的Key是不能進(jìn)行修改的,如果想進(jìn)行修改,那么只能把原來(lái)的key刪除掉,然后再重新進(jìn)行插入
TreeSet和HashSet:他們都是線程不安全的1)TreeSet的底層是紅黑樹,但是HashSet的底層是哈希桶
2)TreeSet中的元素插入刪除查找的時(shí)間復(fù)雜度是log2(N),因?yàn)樗前凑占t黑樹的特性來(lái)進(jìn)行刪除的,增刪改查,但是HashSet的增刪改查的時(shí)間復(fù)雜度是O(1),先進(jìn)行計(jì)算Hash地址,算出下標(biāo),在進(jìn)行遍歷鏈表進(jìn)行增刪改查
3)TreeSet中的元素是關(guān)于Key有序的,因?yàn)閷?shí)現(xiàn)了SortSet接口,但是HashSet是無(wú)序的,底層是一個(gè)散列表
4)TreeSet要求存儲(chǔ)的元素必須實(shí)現(xiàn)Compareble或者是Compator接口,但是HashSet要求存儲(chǔ)自定義對(duì)象必須重寫HashCode和equals方法
5)應(yīng)用場(chǎng)景:TreeSet應(yīng)用于key有序的情況下,但是HashSet應(yīng)用于Key無(wú)需的情況下
HashMap與HashSet的區(qū)別1)HashMap和HashSet底層實(shí)現(xiàn)不一樣,HashSet底層實(shí)現(xiàn)了Set,Iterable接口,和Collection接口,HashMap底層只實(shí)現(xiàn)了Map接口
2.HashMap中使用put()將元素加入map中,而HashSet使用add()將元素放入set中。
3)HashSet里面的值是可以通過(guò)迭代器來(lái)進(jìn)行遍歷里面的值的,但是TreeMap和HashMap是不可以通過(guò)迭代器來(lái)進(jìn)行遍歷的
HashSet如何去重?1)HashSet存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)就是哈希表,也就是數(shù)組和鏈表的混合物,這個(gè)類實(shí)現(xiàn)了set接口
2)HashSet去重:
HashSet底層依賴的是哈希表,在元素存放的時(shí)候,會(huì)先根據(jù)元素的hashcode的值來(lái)進(jìn)行判定,如果沒(méi)有相同的hashcode值就放入數(shù)組里面·,hashcode是object的方法,每一個(gè)對(duì)象的hashcode的值是唯一的,所以可以理解成hashcode值表示這個(gè)對(duì)象在內(nèi)存中的位置,字符串的hashcode(),是根據(jù)內(nèi)容進(jìn)行計(jì)算的,如果hashcode相等,則會(huì)用equals()方法來(lái)進(jìn)行比較
Queue:? 1. hashmap put方法源碼 public V put(K key, V value) { return putVal(hash(key), key, value, false, true); } static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>>16); } ?
Queue DeQueue PriorityQueue LinkedList Vector Stack
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧