【Java技術】Collection框架體系結構
本文系裝載,僅供參考學習 ?來源:源碼時代
Collection的框架體系是面試會經常問的問題:Collection框架體系主要分為Set接口和List接口萍摊,Queue接口,每個接口都有自己的特點椰拒;
List接口特點:允許重復的笔咽,對集合中對象進行索引鳍徽;有順序的茬暇;
比較具有代表性兩個:ArrayList和LinkedList首昔;
那ArrayList和LinkedList的區(qū)別是什么呢?
①存儲方式上面的區(qū)別:
ArrayList: 基于數組實現(xiàn)的容器類;如下代碼實現(xiàn):
LinkedList:基于鏈表實現(xiàn)的容器類糙俗;
②共性:ArrayList和LinkedList都是List接口的實現(xiàn)類;
③效率上面的區(qū)別:
ArrayList在添加勒奇,刪除的時候,速度慢巧骚;在查找的時候赊颠,速度快;
LinkedList在添加劈彪,刪除的時候巨税,速度快,在查找的時候粉臊,速度慢;
LinkedList可以充當隊列,堆棧驶兜,多一些操作頭尾的方法;比如addFirst扼仲, addLast方法;
Set接口特點:不允許重復的值抄淑,沒有順序的屠凶;
比較具有代表性的兩個:HashSet和TreeSet
HashSet和TreeSet的區(qū)別:
HashSet判斷重復的標準:通過對象的hashCode方法和equals方法;
HashSet本質通過HashMap實現(xiàn);
TreeSet判斷重復的標準:添加到TreeSet里面的對象肆资,要么需要實現(xiàn)Comparable接口矗愧,覆寫compareTo方法(自然排序),要么實現(xiàn)Comparetor接口郑原,覆寫compare方法(比較器);
TreeSet本質通過TreeMap實現(xiàn) 唉韭,如下代碼所示:
Queue接口特點:在處理元素前用于保存元素的Collection;隊列通常FIFO(先進先出)的方式排列各個元素犯犁;LinkedList也是實現(xiàn)了Queue接口的;
Collection是層次結構的根接口属愤,但是它上面還有Iterable接口,它繼承Iterable,說明什么情況酸役?
繼承Iterable住诸,說明可以調用Iterable接口里面的iterator方法驾胆,得到一個迭代器(Iterator),通過這個迭代器贱呐,可以進行遍歷元素;Iterator下面還有一個子類叫做ListIterator表示一個雙向的迭代器丧诺,可以進行正向迭代,還可以進行反向迭代器;
如下Collection體系結構圖: