java是什么 Java集合類庫的頂層里的Collection,List,Set是抽象類的話是否更“正確”一些?
Java集合類庫的頂層里的Collection,List,Set是抽象類的話是否更“正確”一些?不正確。Java是單繼承。如果頂層是抽象類,對以后的代碼擴展非常不利。java接口是多實現(xiàn)的,java官
Java集合類庫的頂層里的Collection,List,Set是抽象類的話是否更“正確”一些?
不正確。Java是單繼承。如果頂層是抽象類,對以后的代碼擴展非常不利。java接口是多實現(xiàn)的,java官方設(shè)計為集合和集合,列表也是接口設(shè)計,符合java接口實現(xiàn)的特點。如果它們都被設(shè)計成抽象類,我們將無法在實際開發(fā)中實現(xiàn)我們自己的類。具體結(jié)構(gòu)如下:
collection interface的接口對象集合(單列集合)
ζ-list interface:元素按條目順序保存,可以重復(fù)
│--ζLinkedList接口實現(xiàn)類,鏈表,插入刪除,不同步,行不安全
│--ζArrayList接口實現(xiàn)類,數(shù)組,隨機訪問,無同步,線程不安全!---向量接口實現(xiàn)類數(shù)組,同步,線程安全!-------stack是vector class的實現(xiàn)類
----set接口:只接收一次,不能重復(fù),做內(nèi)部排序
ζ-----HashSet使用哈希表(數(shù)組)存儲元素
iterator和listiterator的區(qū)別如下:1。Iterator是listiterator的父接口。
2. 迭代器是單列集合從容器中獲取元素的常用方法。
對于列表,設(shè)置是常見的。
Listiterator是從列表集合中提取元素的獨特方法。
3. iterator中唯一的函數(shù)是hashnext()、next()、remove()
listiterator具有添加、刪除、修改和查詢遍歷元素的方法,可以反向遍歷元素。
原因是listiterator遍歷的元素的容器有索引。