java是什么 Java集合類庫(kù)的頂層里的Collection,List,Set是抽象類的話是否更“正確”一些?
Java集合類庫(kù)的頂層里的Collection,List,Set是抽象類的話是否更“正確”一些?不正確。Java是單繼承。如果頂層是抽象類,對(duì)以后的代碼擴(kuò)展非常不利。java接口是多實(shí)現(xiàn)的,java官
Java集合類庫(kù)的頂層里的Collection,List,Set是抽象類的話是否更“正確”一些?
不正確。Java是單繼承。如果頂層是抽象類,對(duì)以后的代碼擴(kuò)展非常不利。java接口是多實(shí)現(xiàn)的,java官方設(shè)計(jì)為集合和集合,列表也是接口設(shè)計(jì),符合java接口實(shí)現(xiàn)的特點(diǎn)。如果它們都被設(shè)計(jì)成抽象類,我們將無(wú)法在實(shí)際開發(fā)中實(shí)現(xiàn)我們自己的類。具體結(jié)構(gòu)如下:
collection interface的接口對(duì)象集合(單列集合)
ζ-list interface:元素按條目順序保存,可以重復(fù)
│--ζLinkedList接口實(shí)現(xiàn)類,鏈表,插入刪除,不同步,行不安全
│--ζArrayList接口實(shí)現(xiàn)類,數(shù)組,隨機(jī)訪問(wèn),無(wú)同步,線程不安全!---向量接口實(shí)現(xiàn)類數(shù)組,同步,線程安全!-------stack是vector類的實(shí)現(xiàn)類
----set接口:只接收一次,不能重復(fù),做內(nèi)部排序
ζ-----HashSet使用哈希表(數(shù)組)存儲(chǔ)元素
TreeSet的底層實(shí)現(xiàn)是二叉樹,元素按順序排列